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

标签 maven maven-2 maven-3

正如标题所说,我想知道 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 文件名。 grepfind 搜索参数可以进一步细化,以根据需要限制匹配,例如 SomeClass.class

希望这有帮助。

关于maven - 在 Maven 项目中查找包含类文件的 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43448606/

相关文章:

java - 从 pom 获取应用程序版本

java - 由于谷歌自动服务处理器 ("Unable to get public no-arg constructor",无法编译我的 javafx 和 selenium 项目)

spring-boot - javax.persistence 和 jakarta.persistence 类路径错误

maven-2 - 如何从 Maven 生成的 war 中排除 pom.xml?

java - 为什么 POM 类型的依赖项没有在 Maven 树中显示为传递依赖项?

java - Maven : Not able to download dependencies jta:1. 0.1B

java - 是否有用于读取 maven2/3 pom xml 文件的库?

eclipse - 在 eclipse indigo 中使用嵌入式 maven 3 时 mvn.exe 在哪里?

maven - 将带有 *.pom 文件的 maven 原型(prototype)项目 jar 安装到本地 repo

java - 碧 Jade 报告 : Getting JRRuntimeException: Error creating SAX parser