正如标题所说,我想知道 Maven 中是否有这样的机会来了解模块中加载类文件的 jar。就像 dependency:tree 一样,但我想查看具有特定类文件的 jar。谢谢!
最佳答案
据我所知,没有特定的 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 -DoutputDirectory=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 -DoutputDirectory=target/temp
for /R %G in (target\temp\*.jar) do @jar -tf "%G" | find "SomeClass" && echo %G
无论哪种情况,都会显示匹配条目的完整包和类名,后跟包含的 JAR 文件名。 grep
和 find
搜索参数可以进一步细化,以根据需要限制匹配,例如 SomeClass.class
。
希望这有帮助。
关于maven - 在 Maven 项目中查找包含类文件的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43448606/