Gradle:从maven存储库获取依赖项中的所有文件

Joh*_*ide 9 nexus gradle maven

我想将依赖项中可用的所有文件添加到我的工件中,以便将该依赖项上载到另一个Nexus存储库.

我的依赖包含15个文件存储在我的Nexus存储库中相同的GAV下:

myproject.jar
myproject.jar.md5
myproject.jar.sha1

myproject-sources.jar
myproject-sources.jar.md5
myproject-sources.jar.sha1

myproject.tgz
myproject.tgz.md5
myproject.tgz.sha1

myproject.pom
myproject.pom.md5
myproject.pom.sha1

maven-metadata.xml
maven-metadata.xml.md5
maven-metadata.xml.sha1
Run Code Online (Sandbox Code Playgroud)

-sources.jar文件有一个<classifier>sources</classifier>属性,tgz和pom文件有一个<extension>属性,其他没有什么特别的.

问题是我希望尽可能避免硬编码,只能将GAV参数传递给我的脚本,它可以自己处理任何GAV的所有获取和释放,无论可用的文件是什么.

我现在正在处理的解决方案是直接查询Nexus repo以获取带有这样的URL的文件列表:

http://mynexushost:8081/nexus/service/local/repositories/snapshots/content/${group}/${artifact}/${version}/

这向我发送了一个JSON(接受标头设置为application/json),其中包含我需要检索所有可用文件的URL和内容,下载它们并将它们添加到我的工件中,然后将其上传到我的目标存储库.

我很确定这个解决方案有效,但它绝对不是"Gradle方式",因为它将我与Nexus联系起来并且不使用内置的maven依赖解析实用程序.

如何在不查询Nexus API的情况下解决这个问题?

Man*_*ser 1

我创建了一个名为 Maven Repository Provisioner 的工具,它几乎可以完成此任务。您可以在https://github.com/simpligility/maven-repository-tools上查看

它在生产中用于您想要的目的,但它还计算并提供所有传递依赖项和所需的父 pom。检查一下,如果它没有完全满足您的要求...我接受拉取请求;-)