shell - 在不使用 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
。
推荐的做法是什么?
解决方案
POM 参考的Maven 坐标部分描述了您提到的第二种情况。一般来说,我发现这种模式最容易向学习 Maven 的人解释,即无论是本地还是远程,工件都位于
$REPO/groupId/as/path/artifactId/version/artifactId-version[-classifier].type
$REPO 可以是$USER_HOME/.m2/repository
或https://remote.repo:port/...
。
我也更喜欢第二个,因为我怀疑如果需要的话,这个应用程序有一天会更容易与另一个存储库一起工作。即使不完全正确,它也更具自我记录性,因此似乎更容易调整。
推荐阅读
- excel - 为什么我不能用 AHK 脚本保存 2 个 excel 文件?
- odbc - 如何通过 ODBC 从 SQL Server 更新 4D 记录?
- c - 是否可以找到大写字母并将它们替换为小写?
- xml - 跨元素的唯一属性值
- python - 格式化 json 字符串以使用 json.loads()
- graphics - 四元数和球面旋转坐标之间的正确转换?
- typescript - 打字稿:未找到索引签名是什么意思?
- python - Python Linter 说修补单元测试中缺少方法调用中的值,但测试运行正常。为什么?
- generics - 如何调用期望参数的Java方法,该参数是Kotlin中具有泛型的类
- python-3.x - 为 python 包导入内部模块