【问题标题】:Download artifacts from Maven repository without using Maven在不使用 Maven 的情况下从 Maven 存储库下载工件
【发布时间】:2019-08-12 10:13:36
【问题描述】:

在各种 shell 脚本中,我们需要从 Maven 存储库(目前是 Nexus 2.x,但将来可能会更改)下载工件。

运行脚本的服务器通常没有安装 Maven。所以我正在寻找基于 http 的东西。

一方面,有一个 REST 接口,可以像这样使用

wget "http://local:8081/service/local/artifact/maven/redirect?g=com.mycompany&a=some-app&v=1.2.3"

另一方面,您可以构建一个似乎适用于不同 Maven 存储库的“标准”URL。它包含一个前缀,然后是带有斜杠而不是点的 groupId,然后是 artifactId,然后是版本,然后是 artifactId-(classifier)-version.type 形式的文件名。

推荐的做法是什么?

【问题讨论】:

    标签: shell maven wget artifactory nexus


    【解决方案1】:

    Maven coordinates section of the POM reference 描述了您提到的第二种情况。一般来说,我发现这种模式最容易向学习 Maven 的人解释,即无论是本地还是远程,工件都位于

    $REPO/groupId/as/path/artifactId/version/artifactId-version[-classifier].type
    

    其中 $REPO 可以是 $USER_HOME/.m2/repositoryhttps://remote.repo:port/...

    我也更喜欢第二个,因为我怀疑如果需要,这个应用程序有一天会更容易与另一个存储库一起工作。即使不完全正确,它也更能自我记录,因此似乎更容易调整。

    【讨论】:

    • 也许我把你的问题弄糊涂了,但我认为分类器排在最后,即在版本之后。此外,路径中缺少版本。非常感谢您的链接和解释。
    • 很好的呼唤,当我回答时,我确实在看你是如何在你的问题中输入文件名的。我只是错过了这个版本。现在修好了。很高兴它有帮助!
    猜你喜欢
    • 2012-09-30
    • 2018-07-10
    • 2015-11-29
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2014-04-13
    相关资源
    最近更新 更多