diff --git a/changelog/@unreleased/pr-2368.v2.yml b/changelog/@unreleased/pr-2368.v2.yml new file mode 100644 index 000000000..000795446 --- /dev/null +++ b/changelog/@unreleased/pr-2368.v2.yml @@ -0,0 +1,5 @@ +type: fix +fix: + description: Workaround to IDEA-301084 + links: + - https://github.com/palantir/gradle-baseline/pull/2368 diff --git a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/javaversions/BaselineJavaVersion.java b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/javaversions/BaselineJavaVersion.java index 673ea397b..96dd09ec8 100644 --- a/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/javaversions/BaselineJavaVersion.java +++ b/gradle-baseline-java/src/main/groovy/com/palantir/baseline/plugins/javaversions/BaselineJavaVersion.java @@ -33,6 +33,7 @@ import org.gradle.api.tasks.JavaExec; import org.gradle.api.tasks.TaskAction; import org.gradle.api.tasks.TaskProvider; +import org.gradle.api.tasks.compile.CompileOptions; import org.gradle.api.tasks.compile.GroovyCompile; import org.gradle.api.tasks.compile.JavaCompile; import org.gradle.api.tasks.javadoc.Javadoc; @@ -100,6 +101,7 @@ public void execute(JavaCompile javaCompileTask) { .getOptions() .getCompilerArgumentProviders() .add(new EnablePreviewArgumentProvider(target)); + hackTryToMakePreviewFeaturesWorkInIntellij(target, javaCompileTask.getOptions()); // Set sourceCompatibility to opt out of '-release', allowing opens/exports to be used. javaCompileTask.doFirst(new Action() { @@ -267,6 +269,21 @@ public final void checkJavaVersions() { } } + /** + * Further details available here. + * This is not guaranteed to work - there's a race that depends on plugin application vs when the javaVersions + * closer is applied. However, based on the root project being configured before subprojects, this will likely + * catch practical occurrences. + * An artifact of this is that compile tasks will get _two_ --enable-preview flags set, although this is + * semantically meaningless. + */ + private static void hackTryToMakePreviewFeaturesWorkInIntellij( + Provider provider, CompileOptions compileOptions) { + if (provider.get().enablePreview()) { + compileOptions.getCompilerArgs().add(EnablePreviewArgumentProvider.FLAG); + } + } + private static class EnablePreviewArgumentProvider implements CommandLineArgumentProvider { public static final String FLAG = "--enable-preview";