Gradle 4.10-rc-2 is now available for testing. See the release notes for more information and upgrade instructions.
With Gradle 4.7 and using the kotlin-dsl
plugin, i have a task that has an @Input
of RegularFileProperty
for its execution
I am wiring in the input files by using a Configuration
with a single dependency, as right now I’m using an ivy repository to retrieve the file
I want to resolve that dependency during execution and make it usable to the task’s input.
In Gradle 4.7, the code looks like:
val myconfiguration by configuration.creating
task.myInput.set({ myconfiguration.singleFile }) // seems to work?
The RegularFileProperty
is allowing () -> File
here, which seems to be working on Gradle 4.7, 4.8.and 4.9.
then in the @TaskAction
of my task I can call .asFile.get()
, resolution happens execution time, and everything seems to work great.
This seemed to work before, but fails to compile on Gradle 4-10-rc-2.
None of the following functions can be called with the arguments supplied:
public abstract fun set(p0: File): Unit defined in org.gradle.api.file.RegularFileProperty
public abstract fun set(@Nullable p0: RegularFile?): Unit defined in org.gradle.api.file.RegularFileProperty
public abstract fun set(p0: Provider<out RegularFile!>): Unit defined in org.gradle.api.file.RegularFileProperty
I struggled searching through the APIs to see if there was a way to turn a Configuration
into a single file provider to set the RegularFileProperty
and eventually found one.
Now, I have:
task.myInput.set(layout.file(provider { myconfiguration.singleFile }))
It is a little bit odd to use buildLayout
considering that the directory doesn’t come anywhere from the project itself. Maybe there is a missing API/use case on these APIs?
Anyways, just adding it here as feedback in case others run into similar problems.
I am using the following gradle kotlin DSL code:
java.sourceSets["main"].java {
srcDir("src/main/extraSource")
}
works perfectly in gradle 4.9, but in 4.10 rc1 and 4.10rc2 gives the following error:
Line 5: java.sourceSets["main"].java {
^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public val Project.sourceSets: SourceSetContainer defined in org.gradle.kotlin.dsl
Has this changed? If so, is there any doco on the change?
I answered the above in How to set sourceSets with Gradle 4.10 rc2