【发布时间】:2015-10-17 23:21:03
【问题描述】:
我想将依赖项中可用的所有文件添加到我的工件中,以便我可以将该依赖项上传到另一个 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
-sources.jarfile 有一个<classifier>sources</classifier>property,tgz 和 pom 文件有一个<extension>property,其他没有什么特别的。
问题是我希望尽可能避免硬编码,以便能够仅将 GAV 参数传递给我的脚本,并且它可以自行处理任何 GAV 的所有获取和释放,无论文件是什么可用。
我现在正在研究的解决方案是直接查询 Nexus 存储库以获取带有如下 URL 的文件列表:
http://mynexushost:8081/nexus/service/local/repositories/snapshots/content/${group}/${artifact}/${version}/
这会向我发送一个 JSON(接受标头设置为 application/json),其中包含我需要检索所有可用文件、下载它们并将它们添加到我的工件中,然后将其上传到我的目标存储库的 URL 和内容。
我很确定这个解决方案有效,但它绝对不是“Gradle 方式”,因为它将我与 Nexus 联系在一起并且不使用内置的 maven 依赖解析实用程序。
如何在不查询 Nexus API 的情况下解决这个问题?
【问题讨论】:
-
你能声明一个 Gradle 依赖吗?为什么需要获取所有特定文件?
-
我想在另一个 Nexus 存储库中重现相同的 GAV。也许我不需要一一指定所有文件,但是使用默认的 gradle 方式处理依赖关系我只得到
myproject.jarfile。而且我不想在我的部署脚本中硬编码扩展,我想让它保持通用。 -
是的,这就是我想做的。但是,这只支持部署我的工件中列出的文件,所以我必须在某个地方下载它们。并且使用依赖项来下载文件不允许我下载所有必需的文件。这是实际存在的过程,它适用于只有一个 jar 的依赖项,但不适用于像我在示例中给出的那样具有更多文件的依赖项。
-
@Johnride 你有没有想过这个问题?