Maven2 - 如何从pom文件中列出所有资源库的URL?

5

我正在寻找类似于这样的东西:

List<URL> urls = listURLFromPOM("c:\pom.xml");

..

http://repo1.maven.org/maven2/org/apache/ibatis/ibatis-core/3.0/ibatis-core-3.0.jar
http://repo1.maven.org/maven2/org/apache/camel/camel-activemq/1.1.0/camel-activemq-1.1.0.jar

...

调用上下文是什么?Maven插件实现?使用Maven构建成JAR的代码?还是其他什么?此外,POM可以在许多地方包含URL。您想要提取哪些? - Dan LaRocque
我只想在其他地方打印远程存储库的构件列表,以便稍后可以复制它... - CelinHC
2个回答

5
一个依赖项不知道它的“源代码库”,这可能不是唯一的,所以你无法在没有实际“解析”它的情况下获取依赖项的“源URL”。一种方法是使用dependency:purge-local-repository(而不使用Maven内部API编写代码)。从Maven Dependency Plugin文档中可以了解到:

运行该命令并将输出重定向到文件以进行后处理:

mvn dependency:purge-local-repository > raw.txt

正如我刚才提到的,如果您正在使用多个存储库,则可能需要进行一些后处理以将“成功”下载与“失败”尝试分开。这里是一个在Rubular上的示例正则表达式,它可能有助于实现这样的后处理(我提供了一些说明“问题”的内容)。

非常感谢!!! 我在Windows上执行此操作以仅获取URL... findstr“Downloading”raw.txt> urls.txt - CelinHC
@CelinHC:不用谢。我刚刚更新了我的回答,并发布了一个链接,以说明在使用多个存储库时可能会遇到的问题(以及如何过滤输出)。 - Pascal Thivent
这对我也适用,输出看起来像这样: 从中央下载:https://repo.maven.apache.org/maven2/net/java/dev/jets3t/jets3t/0.9.3/jets3t-0.9.3.pom但是,以防不明显,请注意......这将清除您的本地maven存储库! - RyanQuey

2
您可以使用Maven Dependency Plugin来分析您POM的依赖关系。
mvn dependency:list -DoutputAbsoluteArtifactFilename=true -DoutputFile=dependencies.txt

在Maven调用完成后,使用SCP或FTP传输文件(别忘了评价答案)。 - uı6ʎɹnɯ ꞁəıuɐp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接