是否有 Maven 相当于 rpm --whatprovides 的 jar 文件?

kol*_*eek 5 java dependencies maven-2 jar

如何使用 Maven 或其他工具来查找提供特定 jar 的依赖项中的哪个依赖项?有时它们的依赖关系有三到四个深度。

Pas*_*ent 2

如果您想找出给定项目的传递依赖项来自何处,那么Maven 依赖项插件确实是您的朋友。将其与includes参数一起使用,该参数允许指定以逗号分隔的工件列表来过滤序列化依赖关系树,或者使用 null 来不过滤依赖关系树。工件语法由 定义StrictPatternIncludesArtifactFilter

关于语法,javadoc 写道:

工件模式语法的形式为

[groupId]:[artifactId]:[type]:[version]
Run Code Online (Sandbox Code Playgroud)

其中每个模式段都是可选的,并且支持完整和部分 *通配符。空模式段被视为隐式通配符。

例如,org.apache.*将匹配组 ID 以 开头的所有工件org.apache.:::*-SNAPSHOT并将匹配所有快照工件。

这是一个示例(我想找到activation项目中工件的来源):

$ mvn dependency:tree -Dincludes=:activation::
[信息] 正在扫描项目...
[信息] ---------------------------------------------------------- ------------------------
[信息] 构建 Java EE 6 演示 - Petstore - 域
[信息]任务段:[依赖项:树]
[信息] ---------------------------------------------------------- ------------------------
[信息] [依赖项:tree {执行:default-cli}]
[信息] name.thivent.samples.javaee6.domain:domain:jar:1.0-SNAPSHOT
[信息] \- org.hibernate:hibernate-validator:jar:4.0.2.GA:runtime
[信息] \- javax.xml.bind:jaxb-api:jar:2.1:runtime
[信息] \- javax.activation:activation:jar:1.1:runtime
[信息] ---------------------------------------------------------- ------------------------
...

dependency:tree如果您正在使用M2Eclipse,它会提供一个很好的前端。

对于“更接近”的东西rpm --whatprovides(即无需搜索特定项目),您必须使用存储库搜索引擎以下是activation-1.1.jar的示例(请参阅此工件由...使用部分)。