diff --git a/platforms/jvm/language-groovy/src/testFixtures/resources/org/gradle/groovy/compile/AbstractBasicGroovyCompilerIntegrationSpec/compileJavaFx8Code/build.gradle b/platforms/jvm/language-groovy/src/testFixtures/resources/org/gradle/groovy/compile/AbstractBasicGroovyCompilerIntegrationSpec/compileJavaFx8Code/build.gradle index b4169f95d6fe..f861aa3af739 100644 --- a/platforms/jvm/language-groovy/src/testFixtures/resources/org/gradle/groovy/compile/AbstractBasicGroovyCompilerIntegrationSpec/compileJavaFx8Code/build.gradle +++ b/platforms/jvm/language-groovy/src/testFixtures/resources/org/gradle/groovy/compile/AbstractBasicGroovyCompilerIntegrationSpec/compileJavaFx8Code/build.gradle @@ -6,7 +6,7 @@ repositories { compileGroovy { if (JavaVersion.current().isJava9()) { - options.compilerArgs += ['--add-modules', 'javafx.graphics'] + options.compilerArgs.addAll(['--add-modules', 'javafx.graphics']) groovyOptions.forkOptions.jvmArgs += ['--add-modules', 'javafx.graphics'] } } diff --git a/platforms/jvm/language-java/src/main/java/org/gradle/api/tasks/compile/CompileOptions.java b/platforms/jvm/language-java/src/main/java/org/gradle/api/tasks/compile/CompileOptions.java index b3d1bd03e082..3882a18db158 100644 --- a/platforms/jvm/language-java/src/main/java/org/gradle/api/tasks/compile/CompileOptions.java +++ b/platforms/jvm/language-java/src/main/java/org/gradle/api/tasks/compile/CompileOptions.java @@ -17,12 +17,12 @@ package org.gradle.api.tasks.compile; import com.google.common.collect.ImmutableList; -import com.google.common.collect.Lists; import org.gradle.api.Incubating; import org.gradle.api.file.DirectoryProperty; import org.gradle.api.file.FileCollection; import org.gradle.api.model.ObjectFactory; import org.gradle.api.model.ReplacedBy; +import org.gradle.api.provider.ListProperty; import org.gradle.api.provider.Property; import org.gradle.api.provider.Provider; import org.gradle.api.tasks.Classpath; @@ -77,9 +77,6 @@ public abstract class CompileOptions extends AbstractOptions { private String extensionDirs; - private List compilerArgs = Lists.newArrayList(); - private final List compilerArgumentProviders = Lists.newArrayList(); - private boolean incremental = true; private FileCollection sourcepath; @@ -318,9 +315,7 @@ public void setExtensionDirs(@Nullable String extensionDirs) { * are ignored. */ @Input - public List getCompilerArgs() { - return compilerArgs; - } + public abstract ListProperty getCompilerArgs(); /** * Returns all compiler arguments, added to the {@link #getCompilerArgs()} or the {@link #getCompilerArgumentProviders()} property. @@ -330,8 +325,8 @@ public List getCompilerArgs() { @Internal public List getAllCompilerArgs() { ImmutableList.Builder builder = ImmutableList.builder(); - builder.addAll(CollectionUtils.stringize(getCompilerArgs())); - for (CommandLineArgumentProvider compilerArgumentProvider : getCompilerArgumentProviders()) { + builder.addAll(CollectionUtils.stringize(getCompilerArgs().get())); + for (CommandLineArgumentProvider compilerArgumentProvider : getCompilerArgumentProviders().get()) { builder.addAll(compilerArgumentProvider.asArguments()); } return builder.build(); @@ -343,17 +338,7 @@ public List getAllCompilerArgs() { * @since 4.5 */ @Nested - public List getCompilerArgumentProviders() { - return compilerArgumentProviders; - } - - /** - * Sets any additional arguments to be passed to the compiler. - * Defaults to the empty list. - */ - public void setCompilerArgs(List compilerArgs) { - this.compilerArgs = compilerArgs; - } + public abstract ListProperty getCompilerArgumentProviders(); /** * Convenience method to set {@link ForkOptions} with named parameter syntax. diff --git a/platforms/jvm/language-java/src/test/groovy/org/gradle/api/tasks/compile/CompileOptionsTest.groovy b/platforms/jvm/language-java/src/test/groovy/org/gradle/api/tasks/compile/CompileOptionsTest.groovy index 186f424d7b0f..bd15a792df53 100644 --- a/platforms/jvm/language-java/src/test/groovy/org/gradle/api/tasks/compile/CompileOptionsTest.groovy +++ b/platforms/jvm/language-java/src/test/groovy/org/gradle/api/tasks/compile/CompileOptionsTest.groovy @@ -44,7 +44,7 @@ class CompileOptionsTest extends Specification { !compileOptions.verbose !compileOptions.fork - compileOptions.compilerArgs.empty + compileOptions.compilerArgs.get().empty compileOptions.encoding == null compileOptions.bootstrapClasspath == null compileOptions.extensionDirs == null @@ -90,7 +90,7 @@ class CompileOptionsTest extends Specification { def "converts GStrings to Strings when getting all compiler arguments"() { given: - compileOptions.compilerArgs << "Foo${23}" + compileOptions.compilerArgs.add("Foo${23}") expect: compileOptions.allCompilerArgs.contains('Foo23') diff --git a/subprojects/architecture-test/src/changes/accepted-public-api-changes.json b/subprojects/architecture-test/src/changes/accepted-public-api-changes.json index c575c03b79d5..a6b16569cbed 100644 --- a/subprojects/architecture-test/src/changes/accepted-public-api-changes.json +++ b/subprojects/architecture-test/src/changes/accepted-public-api-changes.json @@ -1,3 +1,30 @@ { - "acceptedApiChanges": [] + "acceptedApiChanges": [ + { + "type": "org.gradle.api.tasks.compile.CompileOptions", + "member": "Method org.gradle.api.tasks.compile.CompileOptions.getCompilerArgs()", + "acceptation": "Upgraded property", + "changes": [ + "Method return type has changed", + "Method is now abstract" + ] + }, + { + "type": "org.gradle.api.tasks.compile.CompileOptions", + "member": "Method org.gradle.api.tasks.compile.CompileOptions.getCompilerArgumentProviders()", + "acceptation": "Upgraded property", + "changes": [ + "Method return type has changed", + "Method is now abstract" + ] + }, + { + "type": "org.gradle.api.tasks.compile.CompileOptions", + "member": "Method org.gradle.api.tasks.compile.CompileOptions.setCompilerArgs(java.util.List)", + "acceptation": "Upgraded property", + "changes": [ + "Method has been removed" + ] + } + ] } diff --git a/subprojects/architecture-test/src/changes/archunit_store/public-api-mutable-properties.txt b/subprojects/architecture-test/src/changes/archunit_store/public-api-mutable-properties.txt index dc4a6c3c7fc4..03bd6ce1b488 100644 --- a/subprojects/architecture-test/src/changes/archunit_store/public-api-mutable-properties.txt +++ b/subprojects/architecture-test/src/changes/archunit_store/public-api-mutable-properties.txt @@ -251,8 +251,6 @@ Method doe Method does not have raw return type assignable to org.gradle.api.provider.Property in (BaseForkOptions.java:0) Method does not have raw return type assignable to org.gradle.api.provider.Provider in (CompileOptions.java:0) Method does not have raw return type assignable to org.gradle.api.provider.Property in (CompileOptions.java:0) -Method does not have raw return type assignable to org.gradle.api.provider.Property in (CompileOptions.java:0) -Method does not have raw return type assignable to org.gradle.api.provider.Provider in (CompileOptions.java:0) Method does not have raw return type assignable to org.gradle.api.provider.Property in (CompileOptions.java:0) Method does not have raw return type assignable to org.gradle.api.provider.Property in (CompileOptions.java:0) Method does not have raw return type assignable to org.gradle.api.provider.Property in (CompileOptions.java:0) diff --git a/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmLanguageUtilities.java b/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmLanguageUtilities.java index 0510e05e5bd5..b321659e9062 100644 --- a/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmLanguageUtilities.java +++ b/subprojects/plugins/src/main/java/org/gradle/api/plugins/jvm/internal/DefaultJvmLanguageUtilities.java @@ -76,7 +76,7 @@ private static int getDefa return compileTask.getOptions().getRelease().get(); } - List compilerArgs = compileTask.getOptions().getCompilerArgs(); + List compilerArgs = compileTask.getOptions().getCompilerArgs().get(); int flagIndex = compilerArgs.indexOf("--release"); if (flagIndex != -1 && flagIndex + 1 < compilerArgs.size()) {