我正在编写一个应用程序,需要我下载一个给定 mavens groupid/artifactid/version 的 jar。
我目前从
public Model pomToModel(String pomUrl) throws Exception {
URL url = new URL(pomUrl);
InputStream stream = url.openStream();
try {
Model model = new MavenXpp3Reader().read(stream);
return model;
} finally {
stream.close();
}
}
因此,给定 POM 的 url,我现在有了代表它的 Maven 模型对象。这似乎运作良好。
我想知道的是两件事:
- 查找模型在 Maven 插件将使用的 Maven 存储库中表示的 jar 工件的 url
- 给定模型,在本地存储库中查找代表 jar 的文件
我已经有了质量很差的解决方案:我转到 mvnrepository.com 手动编码 url,并使用 ~/.m2/repository 作为文件的前缀。我显然可以改进这个解决方案,但最终我会很糟糕地复制在 Maven 代码库中经过良好测试和良好使用的代码。
我真的很想知道如何使用 Maven 类来做到这一点。
我已经做了相当多的谷歌搜索,但是搜索有关 Maven 和 jar 的任何内容(甚至在 stackoverflow 上)的有趣之处在于,我找到了很多关于如何使用 Maven 的解决方案,而不是如何使用 Maven 类进行编码。
谢谢您的帮助
Option 1
khmarbaise 推荐的以太。
它是 Maven 3.0 附带的本机库
Option 2
如果您想要一个从命令行或 shell 脚本中下载 Maven 模块的简单解决方案,Apache ivy 有一个独立的 http://ant.apache.org/ivy/history/latest-milestone/standalone.html jar.
Example:
以编程方式使用 IVY 依赖管理器 https://stackoverflow.com/questions/3955209/using-ivy-dependencies-manager-programmatically/3963721#3963721
Option 3
如果您只是在寻找 Maven jar 并且不关心依赖管理,那就更简单了。
以下是直接从 Maven Central 检索 log4j jar 的方法:
curl -O http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.jar
如果您使用 Nexus 存储库管理器,它有一个有用的 REST API
使用 Nexus REST API 获取给定 groupid/artifactId 的最新工件版本 https://stackoverflow.com/questions/7911620/using-the-nexus-rest-api-to-get-latest-artifact-version-for-given-groupid-artfic/7922863#7922863
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)