Slackbot
11/17/2022, 6:07 PMmelix
11/17/2022, 6:20 PMmelix
11/17/2022, 6:20 PMmelix
11/17/2022, 6:21 PMmelix
11/17/2022, 6:22 PMC Hartman
11/17/2022, 6:30 PMmelix
11/17/2022, 7:11 PMmelix
11/17/2022, 7:12 PMC Hartman
11/17/2022, 7:35 PMtask buildClient(type: Exec) {
outputs.dir file('build')
....
}
configurations {
webResource {
canBeConsumed = true
canBeResolved = false
}
}
artifacts {
webResource(buildClient.outputs.files.singleFile)
// Documentation suggests this is needed but adding it results in a compile error missing function
// {
// buildBy(buildClient)
// }
}
Consumer:
configurations {
webResources {
canBeConsumed = false
canBeResolved = true
}
}
dependencies {
// If i get this correct this means, put the webResource from consumer-proj into the webResources configuration
webResources(project(path: ':consumer-proj', configuration: 'webResource'))
}
sourceSets {
main {
resources {
srcDir(configurations.webResources.resolve())
}
}
}
Runs but the resources are not there and buildClient
is not runmelix
11/17/2022, 7:57 PMsrcDir
triggers a StackOverflowError
melix
11/17/2022, 7:57 PMmelix
11/17/2022, 7:57 PMplugins {
id 'base'
}
configurations {
webResources {
canBeConsumed = true
canBeResolved = false
}
}
def generateSources = tasks.register("generateSources", GenerateSources) {
outputDirectory = layout.buildDirectory.dir("generated-java")
}
configurations.webResources.outgoing.artifact(generateSources)
abstract class GenerateSources extends DefaultTask {
@OutputDirectory
abstract DirectoryProperty getOutputDirectory()
@TaskAction
void generate() {
new File(outputDirectory.get().asFile, "Foo.java").text = "public class Foo {}"
}
}
melix
11/17/2022, 7:57 PMplugins {
id 'java'
}
configurations {
webResources {
canBeConsumed = false
canBeResolved = true
}
}
dependencies {
webResources project(path:':producer', configuration: 'webResources')
}
def copy = tasks.register("copy", Copy) {
from configurations.webResources
into layout.buildDirectory.dir("sources-java")
}
sourceSets {
main {
java.srcDir(copy)
}
}
melix
11/17/2022, 7:58 PMsourceSets.main.java.srcDir(configurations.webResources
directly, but this triggers the StackOverflow
C Hartman
11/17/2022, 8:04 PMC Hartman
11/17/2022, 8:07 PMVampire
11/17/2022, 9:29 PMbuildBy
vs. builtBy
.C Hartman
11/18/2022, 9:53 AMC Hartman
11/18/2022, 12:00 PMconfigurations {
webResources {
canBeConsumed = true
canBeResolved = false
}
}
artifacts {
webResources(buildClient.outputs.files.singleFile) {
builtBy(buildClient)
}
}
Adding all the outputs to the webResources artifact still seams clunky and only works because I know there is only one directory. This is probably because the Exec task that is used to generate the resources has no nice OutputDir type DirectoryProperty
. But overall this is not that bad.
Consumer:
configurations {
webResources {
canBeConsumed = false
canBeResolved = true
}
}
dependencies {
webResources project(path: ':producer', configuration: 'webResources')
}
def copy = tasks.register("copy", Copy) {
from configurations.webResources
into layout.buildDirectory.dir("webresources")
}
sourceSets {
main {
resources {
srcDir(copy)
//srcDir(tasks.getByPath(":producer:buildClient").outputs)
}
}
}
Sill don't really like the extra copy task. Upside I suppose is that the copy task allows me to place the artifacts in a sub dir if needed.
Should I submit a bug report about the stackoverflow if you do srcDir(configurations.webResources)
?Vampire
11/18/2022, 12:04 PM