Maven中依赖jar文件的列表

Sin*_*son 62 java dependencies maven-2 classpath

使用Maven 2,有没有一种方法可以将jar依赖项列为文件名?

mvn dependency:build-classpath 
Run Code Online (Sandbox Code Playgroud)

可以列出jar文件,但这将包括它们在我的本地存储库中的位置的完整路径.我需要的只是一个文件名列表(或复制依赖目标复制的文件名).

所以我需要的清单就像是

activation-1.1.jar,antlr-2.7.6.jar,aopalliance-1.0.jar etc...
Run Code Online (Sandbox Code Playgroud)

理想情况下,作为maven属性,但我想,像build-classpath这样的文件可以生成.

我想要实现的是Bundle-ClassPath为OSGi包编写一个手动维护的MANIFEST.MF文件.(您不应该理解这一点来回答这个问题.)

澄清一下:问题在于如何将清单头文件写入jar中的MANIFEST.MF文件中(很容易google).我问的是如何获取我想要写的数据,即上面显示的列表.

Ani*_*nis 74

此命令将生成您的maven项目的依赖项树:

$ mvn dependency:tree
Run Code Online (Sandbox Code Playgroud)

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


Gab*_* Mc 19

尽我所知,你不能用逗号和没有空格得到那个输出.无论通过命令行,并通过pom.xml文件,如果指定空格或""(空字符串)作为替补与无论是Maven的依赖,插件或CLI怪胎pathSeparatorfileSeparator.所以,你可能被迫达成妥协.您可以

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

但是,这应该会得到一个完整的列表,'::'而不是仅仅是',',但它可以工作.如果您运行:

    mvn dependency: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

  • 很好的答案!如果您使用 -Dmdep.pathSeparator=',' -Dmdep.prefix='.' -Dmdep.fileSeparator='/' 你会得到一个逗号分隔的相对文件名列表 a la ./file1.jar,./file2.jar 然后避免了过滤的需要。 (2认同)

naX*_*aXa 11

这是你要求的命令

$ mvn dependency:tree
Run Code Online (Sandbox Code Playgroud)

对于大型项目,它可以输出大量文本.我假设您要检查依赖关系树是否包含某个依赖关系,因此您不需要完整列表.

以下是在Windows上过滤输出的方法:

$ mvn dependency:tree | findstr javax.persistence
Run Code Online (Sandbox Code Playgroud)

以下是如何在Linux上执行此操作:

$ mvn dependency:tree | grep javax.persistence
Run Code Online (Sandbox Code Playgroud)

Maven 过滤依赖树的方法(适用于Windows cmd,MacOS和Linux shell):

$ mvn dependency:tree -Dincludes=javax.persistence:*
Run Code Online (Sandbox Code Playgroud)

Maven方式(Windows PowerShell):

$ mvn dependency:tree '-Dincludes=javax.persistence:*'
Run Code Online (Sandbox Code Playgroud)


kis*_*sna 8

实际上,对于最终的罐子列表,只需使用

mvn dependency:list
Run Code Online (Sandbox Code Playgroud)

这比dependency:tree简单得多,因为它显示了详细的可传递树和冲突解决方案(带详细信息),因此简单地获得最终列表是一个过大的杀伤力。

  • 如果你想让它们排序:`mvn dependency:list -Dsort=true` (3认同)

sbl*_*ndy 5

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

另外,你试过<addClasspath>标签<manifestFile>吗?这应该具有将类路径合并到清单中的预期效果.

<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>
Run Code Online (Sandbox Code Playgroud)


Dav*_*ano 2

Maven 可以自动在清单中构建类路径:http://maven.apache.org/guides/mini/guide-manifest.html

这是 Maven 归档插件的配置。