2010-07-15 67 views
4

库网址我正在寻找这样的事情:maven2的 - 如何列出所有资源从POM文件

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 

... 
+0

什么是调用上下文? Maven插件实现?你正在用Maven构建一个JAR代码?还有别的吗? 另外,POM可以在很多地方包含URL。你想提取哪些? – 2010-07-16 00:52:09

+0

我只想在别处打印远程存储库工件列表。 所以我可以将它复制到后面...... – CelinHC 2010-07-16 12:33:13

回答

1

可以使用Maven Dependency Plugin来分析你POM的依赖关系。

mvn dependency:list -DoutputAbsoluteArtifactFilename=true -DoutputFile=dependencies.txt 
+0

在maven调用完成后使用SCP或FTP传输文件(并且不要忘记对答案进行评分)。 – 2010-07-16 14:01:14

2

依赖关系是不知道它的“源库”这可能不是唯一的,所以你将无法得到“源URL”依赖的没有实际解决它 。一种方法(不使用Maven内部API编写代码)将使用dependency:purge-local-repository。从Maven Dependency Plugin文档:

运行该命令和输出重定向到后处理的文件:

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

正如我刚才提到的,如果你使用多个仓库,你可能需要做一些后期处理将“成功”下载与“失败”尝试分开。这里有一个关于Rubular的sample regex,可能有助于实现这样的后期处理(我提供了一些说明“问题”的内容)。

+0

非常感谢! 我在Windows上做了这个只得到了url ... findstr“正在下载”raw.txt> urls.txt – CelinHC 2010-07-19 16:08:48

+0

@CelinHC:不客气。我刚刚更新了我的答案,并发布了一个链接来说明使用多个存储库时的潜在问题(以及如何过滤输出)。 – 2010-07-19 16:36:46