问题描述
我只想获取/下载!来自正确发布(带有元数据)工件的 POM 文件。
task getArtifacts(type: copy) {
from configurations.myConf
into myWorkingDir
}
并将 myConf(iguration) 的传递标志设置为 false。
但是如何只下载相关的POM文件!
这样做的真正原因是:我混淆了下载的 jar,然后将它们作为混淆版本部署回存储库。但我想为混淆的工件提供 pom 元数据……只是在发布之前使用 artifacts.add(xxx.pom) 。
也许您知道如何在 Gradle 中实现带有元数据的混淆 jar 的发布?
解决方法
您可以使用 ArtifactResolutionQuery
手动解析特定类型的工件:
def result = dependencies.createArtifactResolutionQuery()
.forModule('group','name','version')
.withArtifacts(JvmLibrary,MavenPomArtifact)
.execute()
for (component in result.resolvedComponents) {
component.getArtifacts(MavenPomArtifact).each { println it.file }
}
我不确定实际的工件是否也能用这种方法解决,但你可以只使用 POM 文件的路径。请注意,您应该在执行阶段调用此功能,方法是使用 @TaskAction
定义新的任务类型或使用 doFirst
/doLast
关闭。