Slackbot
07/08/2022, 7:34 PMJavi
07/08/2022, 7:36 PMgrossws
07/08/2022, 8:22 PMproject(":") dependency. See https://docs.gradle.org/current/userguide/cross_project_publications.htmlJavi
07/08/2022, 9:51 PMChangelogPluginExtension.get(version: String)Javi
07/08/2022, 9:51 PMJavi
07/08/2022, 9:52 PMgrossws
07/08/2022, 10:07 PMJavi
07/08/2022, 10:11 PMJavi
07/08/2022, 10:11 PM// this can't work if the task output is an `String`
artifacts {
add("instrumentedJars", someTask.outputFile) {
builtBy(someTask)
}
}grossws
07/08/2022, 10:13 PMgrossws
07/08/2022, 10:13 PMJavi
07/08/2022, 10:14 PMJavi
07/08/2022, 10:14 PMJavi
07/08/2022, 10:17 PMgrossws
07/08/2022, 10:17 PM@get:OutputFile abstract val out: RegularFileProperty parameter, write the txt/xml file in its task action, create separate configuration (with isCanBeResolved=false and isCanBeConsumed=true plus attributes block to define some attributes to differentiate from other variants)grossws
07/08/2022, 10:18 PMcomponents["main"] as AdhocComponentWithVariants to add variant from your configurationgrossws
07/08/2022, 10:18 PMartifacts block is legacy iircgrossws
07/08/2022, 10:21 PMoutgoingCofiguration.from(tasks.named("writeTask")) should workJavi
07/08/2022, 10:22 PMJavi
07/08/2022, 10:22 PMJavi
07/08/2022, 10:22 PMgrossws
07/08/2022, 10:26 PMgrossws
07/08/2022, 10:27 PMJavi
07/08/2022, 10:32 PMfrom partgrossws
07/08/2022, 10:32 PMJavi
07/08/2022, 10:33 PMgrossws
07/08/2022, 10:33 PMgrossws
07/08/2022, 10:34 PMgrossws
07/08/2022, 11:09 PM// in producer project, fetchCrd has single OutputDirectory property
val fetchCrds by tasks.registering(FetchCrdTask::class) {
// ...
}
val crds by configurations.creating {
isCanBeConsumed = true
isCanBeResolved = false
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("CRD"))
}
outgoing.artifact(fetchCrds)
}
// in consumer project
val crds by configurations.creating {
isCanBeConsumed = false
isCanBeResolved = true
attributes {
attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION))
attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named("CRD"))
}
}
tasks.register<Copy>("consumeCrds") {
from(crds)
into(layout.buildDirectory.dir("kubernetes/crds"))
}grossws
07/08/2022, 11:11 PMoutgoingVariants task produces something like
> Task :traefik-crd:outgoingVariants
--------------------------------------------------
Variant crds
--------------------------------------------------
Capabilities
- xxxxxx.operator:traefik-crd:0.1.0-dev.3.uncommitted+c65529a (default capability)
Attributes
- org.gradle.category = documentation
- org.gradle.docstype = CRD
Artifacts
- build/kubernetes/crdsgrossws
07/08/2022, 11:16 PMdependencyInsight (w/ Gradle 7.5-rc-4) show that it was matched on these attributes:
> Task :xxxxxx-operator:dependencyInsight
project :traefik-crd
Variant crds:
| Attribute Name | Provided | Requested |
|---------------------|---------------|---------------|
| org.gradle.category | documentation | documentation |
| org.gradle.docstype | CRD | CRD |
project :traefik-crd
\--- crdsgrossws
07/08/2022, 11:19 PMJavi
07/08/2022, 11:33 PMJavi
07/08/2022, 11:33 PMJavi
07/08/2022, 11:34 PMgrossws
07/08/2022, 11:34 PMProject#artifacts with archives. It internally works with same Configuration#artifacts as does Configuration#outgoing#artifactgrossws
07/08/2022, 11:34 PMJavi
07/08/2022, 11:34 PMJavi
07/08/2022, 11:36 PMgrossws
07/08/2022, 11:36 PMmyConfiguration(project(":module")) and it works. Same if you publish to nexus with gradle metadata and then consume it by GAV coordsJavi
07/08/2022, 11:37 PMgrossws
07/08/2022, 11:39 PM(components["java"] as AdhocComponentWithVariants).withVariantsFromConfiguration(crds) { skip() }, turn warning about maven incompatibility off or just ignore it ,)grossws
07/08/2022, 11:41 PMJavi
07/08/2022, 11:48 PMJavi
07/08/2022, 11:49 PMgrossws
07/08/2022, 11:49 PMJavi
07/08/2022, 11:49 PMJavi
07/08/2022, 11:50 PMgrossws
07/08/2022, 11:53 PMgrossws
07/08/2022, 11:54 PMgrossws
07/08/2022, 11:59 PMJavi
07/09/2022, 12:08 AM