我的java maven项目包含一堆子项目,如下面的
|- parent |- core |- db |- xml |- util |- config
在所有项目的pom.xml
文件中,定义了几个依赖项。但是,仅针对其中一些,指定了<version/>
。例如
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.apache.xmlbeans</groupId>
<artifactId>xmlbeans</artifactId>
</dependency>
</dependencies>
</dependencyManagement>
如您所见,对于org.apache.ant
,version
被明确提及为1.9.7
。但是,对于org.apache.xmlbeans
,会根据多个因素自动推断版本。虽然这是一个方便的功能,但当第三方库项目非常活跃并且可能有其他依赖项时,它也会使版本有时无法预测。
所以,问题是,我想找到所有 not 的依赖项明确指定version
。
我试过了help:effective-pom
。它列出了所有子项目中的所有依赖项,但它也输出了推断的版本。
您可以说,我正在查看effective-pom
的变体,它以递归方式列出所有子项目的所有依赖项,但除非另行明确指定,否则不会自动获取任何版本。一旦我有了这样的列表(以xml格式),我可以在xml输出上应用一些xqueries来过滤掉我想要的内容并进行必要的更改。
编辑:
我正在寻找没有<version>
标签的依赖项。如果使用Ranges
答案 0 :(得分:0)
我不知道直接从Maven处理此问题的方法,但您可以尝试在整个POM文件中使用XPath。尝试使用此表达式:
//dependency[not(version)]
这将返回不包含子节点<dependency>
的所有<version>
个节点。