From c1f0da324605c18caf137631e58878136a707df4 Mon Sep 17 00:00:00 2001 From: Kristóf Marussy Date: Thu, 28 Jul 2022 15:30:10 +0200 Subject: build: file encoding import into Eclipse See https://github.com/gradle/gradle/issues/898 --- buildSrc/src/main/groovy/refinery-eclipse.gradle | 28 ++++++++++++++++++++++ .../main/groovy/refinery-frontend-workspace.gradle | 1 + .../main/groovy/refinery-java-conventions.gradle | 2 +- .../main/groovy/refinery-java-test-fixtures.gradle | 4 +++- buildSrc/src/main/groovy/refinery-jmh.gradle | 4 +++- 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 buildSrc/src/main/groovy/refinery-eclipse.gradle (limited to 'buildSrc/src') diff --git a/buildSrc/src/main/groovy/refinery-eclipse.gradle b/buildSrc/src/main/groovy/refinery-eclipse.gradle new file mode 100644 index 00000000..ddd15fc2 --- /dev/null +++ b/buildSrc/src/main/groovy/refinery-eclipse.gradle @@ -0,0 +1,28 @@ +plugins { + id 'eclipse' +} + +// Workaround from https://github.com/gradle/gradle/issues/898#issuecomment-885765821 +def eclipseResourceEncoding = tasks.register('eclipseResourceEncoding') { + ext.outputFile = file('.settings/org.eclipse.core.resources.prefs') + def compileTask = tasks.findByName('compileJava') + ext.encoding = provider({ compileTask?.options?.encoding }).orElse(providers.systemProperty('file.encoding')) + + inputs.property("file.encoding", encoding) + outputs.file(outputFile).withPropertyName('outputFile') + + doLast { + Properties eclipseEncodingProperties = new Properties(Collections.singletonMap('eclipse.preferences.version','1')) + eclipseEncodingProperties.put('encoding/', encoding.get()) + outputFile.withOutputStream { + eclipseEncodingProperties.store(it, 'generated by ' + name) + } + eclipseEncodingProperties.list(System.out) + } +} + +tasks.named('eclipse') { + dependsOn(eclipseResourceEncoding) +} + +eclipse.synchronizationTasks(eclipseResourceEncoding) diff --git a/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle b/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle index 35410db4..9c6d7b13 100644 --- a/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle +++ b/buildSrc/src/main/groovy/refinery-frontend-workspace.gradle @@ -1,4 +1,5 @@ plugins { + id 'refinery-eclipse' id 'refinery-frontend-conventions' } diff --git a/buildSrc/src/main/groovy/refinery-java-conventions.gradle b/buildSrc/src/main/groovy/refinery-java-conventions.gradle index 5bc73f61..bbdaa86c 100644 --- a/buildSrc/src/main/groovy/refinery-java-conventions.gradle +++ b/buildSrc/src/main/groovy/refinery-java-conventions.gradle @@ -1,7 +1,7 @@ plugins { - id 'eclipse' id 'jacoco' id 'java' + id 'refinery-eclipse' } repositories { diff --git a/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle b/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle index 326fa868..693cba98 100644 --- a/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle +++ b/buildSrc/src/main/groovy/refinery-java-test-fixtures.gradle @@ -24,7 +24,9 @@ eclipse.classpath { if (hasTest && usedBy.contains('testFixtures')) { usedBy += 'test' } - entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',') + if (!usedBy.empty) { + entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',') + } } } } diff --git a/buildSrc/src/main/groovy/refinery-jmh.gradle b/buildSrc/src/main/groovy/refinery-jmh.gradle index 17654463..fada4fb3 100644 --- a/buildSrc/src/main/groovy/refinery-jmh.gradle +++ b/buildSrc/src/main/groovy/refinery-jmh.gradle @@ -47,7 +47,9 @@ eclipse.classpath.file.whenMerged { classpath -> // main and test sources are also used by jmh sources. usedBy += 'jmh' } - entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',') + if (!usedBy.empty) { + entry.entryAttributes['gradle_used_by_scope'] = usedBy.join(',') + } } } } -- cgit v1.2.3-54-g00ecf