仅从 Maven/JFrog 存储库下载 POM 文件

问题描述

我只想获取/下载!来自正确发布(带有元数据)工件的 POM 文件

一个只下载jar包的任务很容易

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关闭。