我正在编写一个应用程序,要求我下载一个给定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();
}
}
Run Code Online (Sandbox Code Playgroud)
所以给定POM的url,我现在有maven Model对象来表示它.这似乎运作良好.
我想知道的是两件事:
我已经有质量差的解决方案:我去mvnrepository.com手动编码url,我使用〜/ .m2/repository作为文件的前缀.我显然可以改进这个解决方案,但是我最终会很难复制经过充分测试并在maven代码库中使用的代码.
我真的很想知道如何使用maven类来做到这一点.
我已经做了相当多的谷歌搜索,但搜索maven和jar(甚至在stackoverflow)上的任何有趣的事情是我找到了很多关于如何使用maven的解决方案,而不是如何使用maven类进行编码.
谢谢您的帮助
按照khmarbaise的建议使用以太.
它是Maven 3.0附带的本机库
如果您想从命令行或shell脚本中下载Maven模块的简单解决方案,Apache ivy有一个独立的 jar.
例:
如果您只是在寻找Maven jar并且不关心依赖管理,那就更简单了.
以下是如何从Maven Central直接检索log4j jar:
curl -O http://search.maven.org/remotecontent?filepath=log4j/log4j/1.2.17/log4j-1.2.17.jar
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Nexus存储库管理器,则它具有有用的REST API
使用Nexus rest API获取给定groupid/artifactId的最新工件版本
要从 Maven 存储库下载工件,需要使用Aether lib。
另请参阅http://www.sonatype.com/people/category/aether/
此外,还有如何操作的示例以及 Aether lib 的完整源代码。很久以前,我玩过一点Aether。
归档时间: |
|
查看次数: |
3869 次 |
最近记录: |