在 Maven 项目中查找包含 class 文件的 jar
Find jars containing a class file in Maven project
正如 header 所说,我想知道 Maven 中是否有这样的机会来了解模块中加载 class 文件的 jar。就像 dependency:tree,但我希望看到带有特定 class 文件的 jar。谢谢!
据我所知,没有特定的 Maven 插件 (3.0+) 可以搜索 class 声明的依赖项。但是,我相信我了解您的需求并提供以下解决方案:
查找重复声明
mvn dependency:analyze-duplicate -DcheckDuplicateClasses
在 Eclipse 中查找包含 JAR
使用CTRL+SHIFT+T调出打开类型 对话框。输入部分或整个 class 名称会显示构建 class 路径中包含 JAR 的列表。
查找包含不包含 IDE
的 JAR
如果需要更多程序控制来检查没有 IDE 的系统,例如 CI 服务器,则可以使用以下代码片段列出包含特定 class 的 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
在任何一种情况下,都会显示匹配条目的完整包和 class 名称,后跟包含的 JAR 文件名。 grep
和 find
搜索参数可以进一步细化以根据需要限制匹配,例如 SomeClass.class
.
希望对您有所帮助。
正如 header 所说,我想知道 Maven 中是否有这样的机会来了解模块中加载 class 文件的 jar。就像 dependency:tree,但我希望看到带有特定 class 文件的 jar。谢谢!
据我所知,没有特定的 Maven 插件 (3.0+) 可以搜索 class 声明的依赖项。但是,我相信我了解您的需求并提供以下解决方案:
查找重复声明
mvn dependency:analyze-duplicate -DcheckDuplicateClasses
在 Eclipse 中查找包含 JAR
使用CTRL+SHIFT+T调出打开类型 对话框。输入部分或整个 class 名称会显示构建 class 路径中包含 JAR 的列表。
查找包含不包含 IDE
的 JAR如果需要更多程序控制来检查没有 IDE 的系统,例如 CI 服务器,则可以使用以下代码片段列出包含特定 class 的 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
在任何一种情况下,都会显示匹配条目的完整包和 class 名称,后跟包含的 JAR 文件名。 grep
和 find
搜索参数可以进一步细化以根据需要限制匹配,例如 SomeClass.class
.
希望对您有所帮助。