Maven中的依赖关系jar文件列表

使用Maven 2,有没有一种方法可以列出的jar依赖只是文件名?

mvn dependency:build-classpath 

可以列出jar文件,但是这将包括在我的本地存储库中的位置的完整path。 我所需要的基本上只是文件名的列表(或复制依赖关系目标复制的文件名)。

所以我需要的列表将是类似的

 activation-1.1.jar,antlr-2.7.6.jar,aopalliance-1.0.jar etc... 

理想的是作为一个maven属性,但我想,像build-classpath这样的文件可以生成。

我想要实现的是将一个Bundle-ClassPath写入一个OSGi包的手动维护的MANIFEST.MF文件。 (你不需要明白这一点来回答这个问题。)

澄清:问题在于如何将清单头文件写入MANIFEST.MF文件中的jar(这很容易googleble)。 我正在问如何获得我想写的数据,即上面显示的列表。

这个命令将会生成你的maven项目的依赖关系树:

 $ mvn dependency:tree 

我相信你会喜欢的结果:-)

尽我所知,你不能得到完全的输出,用逗号和空格。 无论是通过命令行还是通过pom.xml文件,如果您指定空格或'(空string)作为pathSeparatorfileSeparator的替代品,maven-dependency-plugin或CLI会fileSeparator 。 所以,你可能会被迫达成某种妥协。 您可以

     mvn dependency:build-classpath -Dmdep.pathSeparator =“:”-Dmdep.prefix =''-Dmdep.fileSeparator =“:”-Dmdep.outputFile = classpath

然而,这应该让你一个完整的清单,由'::'而不是','分开,但它的作品。 如果你运行:

     mvn依赖项:build-classpath -Dmdep.pathSeparator =“@ REPLACEWITHCOMMA”-Dmdep.prefix =''-Dmdep.fileSeparator =“@”-Dmdep.outputFile = classpath

并将其附加到generate-resources阶段稍后通过在生命周期的process-resources阶段中设置正确的属性来过滤该资源,那么您应该只能得到逗号。

你可以看到完整的选项列表: http : //maven.apache.org/plugins/maven-dependency-plugin/build-classpath-mojo.html

你看过Apache Felix项目吗? 它有一大堆的插件,包括一个应该做你想做的插件 。

另外,你是否用<manifestFile>试过了<addClasspath>标签? 这应该具有将类path合并到您的清单中的预期效果。

 <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> ... <configuration> <archive> <addClasspath>true</addClasspath> <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> </archive> </configuration> ... </plugin> 

Maven可以自动在您的清单中构build类path: http : //maven.apache.org/guides/mini/guide-manifest.html

这是Maven档案插件的configuration。

我可能会在这里丢失一些东西,但是因为您已经使用了复制依赖关系,所以听起来像您真正所做的只是指定目录中的文件列表。

Ant可以为你做这个没有任何问题,就像一个shell脚本一样。

为了给现有的答案增加一个缺口,当前的maven-dependency-plugin允许使用outputProperty参数将类path保存到一个属性中。