在不使用 Maven 的情况下从 Maven 存储库下载工件
Download artifacts from Maven repository without using Maven
在各种 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 存储库的 "standard" URL。它包含一个前缀,然后是带斜杠而不是点的 groupId,然后是 artifactId,然后是版本,然后是格式为 artifactId-(classifier)-version.type
.
的文件名
推荐的做法是什么?
Maven coordinates section of the POM reference 描述了您提到的第二种情况。总的来说,我发现这种模式最容易向学习 Maven 的人解释,即无论是本地还是远程,工件都位于
$REPO/groupId/as/path/artifactId/version/artifactId-version[-classifier].type
其中 $REPO 可以是 $USER_HOME/.m2/repository
或 https://remote.repo:port/...
。
我也更喜欢第二个,因为我怀疑如果需要的话,有一天这个应用程序可以更容易地与另一个存储库一起工作。即使不完全正确,它也更像是自我记录,因此似乎更容易调整。
在各种 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 存储库的 "standard" URL。它包含一个前缀,然后是带斜杠而不是点的 groupId,然后是 artifactId,然后是版本,然后是格式为 artifactId-(classifier)-version.type
.
推荐的做法是什么?
Maven coordinates section of the POM reference 描述了您提到的第二种情况。总的来说,我发现这种模式最容易向学习 Maven 的人解释,即无论是本地还是远程,工件都位于
$REPO/groupId/as/path/artifactId/version/artifactId-version[-classifier].type
其中 $REPO 可以是 $USER_HOME/.m2/repository
或 https://remote.repo:port/...
。
我也更喜欢第二个,因为我怀疑如果需要的话,有一天这个应用程序可以更容易地与另一个存储库一起工作。即使不完全正确,它也更像是自我记录,因此似乎更容易调整。