首页 > 解决方案 > 在不使用 Maven 的情况下从 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 存储库的“标准”URL。它包含一个前缀,然后是带有斜线而不是点的 groupId,然后是 artifactId,然后是版本,然后是格式为 的文件名artifactId-(classifier)-version.type

推荐的做法是什么?

标签: shellmavenwgetartifactorynexus

解决方案


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

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

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

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


推荐阅读