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

Dmi*_*ich 6 maven-2 maven-3 maven

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

Fre*_*ing 9

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

查找重复声明

mvn dependency:analyze-duplicate -DcheckDuplicateClasses
Run Code Online (Sandbox Code Playgroud)

在 Eclipse 中查找包含 JAR

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

在没有IDE的情况下查找包含JAR

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

对于 Unix 或 Git Bash 系统

mvn clean dependency:copy-dependencies -DoutputDirectory=target/temp
for j in target/temp/*.jar; do jar -tf $j | grep SomeClass && echo $j; done
Run Code Online (Sandbox Code Playgroud)

对于 Windows,通过cmdshell

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

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

希望这可以帮助。