在Maven项目中查找包含类文件的jar

时间:2017-04-17 09:20:35

标签: maven maven-2 maven-3

正如标题所示,我想知道在Maven中是否有这样的机会知道jar文件被加载到模块中。就像依赖:树,但我想看到具有特定类文件的jar。谢谢!

1 个答案:

答案 0 :(得分:2)

据我所知,没有特定的Maven插件(3.0+)可以搜索类声明的依赖项。但是,我相信我了解您的需求并提供以下解决方案:

查找重复声明

mvn dependency:analyze-duplicate -DcheckDuplicateClasses

在Eclipse中查找包含JAR

使用 CTRL + SHIFT + T 打开打开类型对话框。输入部分或整个类名称会在构建类路径上显示包含JAR的列表。

查找包含不带IDE的JAR

如果在没有IDE(例如CI服务器)的系统上检查需要更多的程序控制,可以使用以下代码段列出包含特定类甚至特定名称模式的JAR文件。这种方法使用Maven的依赖插件来收集临时目录中的所有依赖项,以便可以轻松搜索它们。

对于Unix或Git Bash系统

mvn clean dependency:copy-dependencies -D=target/temp
for j in target/temp/*.jar; do jar -tf $j | grep SomeClass && echo $j; done

适用于Windows cmd shell

mvn clean dependency:copy-dependencies -D=target/temp
for /R %G in (target\temp\*.jar) do @jar -tf "%G" | find "SomeClass" && echo %G

在任何一种情况下,都会显示匹配条目的完整包和类名,后跟包含JAR文件名。 grepfind搜索参数可以进一步细化以根据需要限制匹配,例如SomeClass.class

希望这有帮助。