在maven项目中,有没有办法找到未明确指定版本的依赖项

问题描述 投票:1回答:1

我的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.antversion被明确提到为1.9.7。但是,对于org.apache.xmlbeans,会根据几个因素自动推断出版本。虽然这是一个方便的功能,但当第三方库项目非常活跃并且可能具有其他依赖项时,它也会使版本有时无法预测。

所以,问题是,我想找到所有没有明确指定version的依赖项。

我试过help:effective-pom。它列出了所有子项目中的所有依赖项,但它也输出了推断的版本。

您可以说,我正在查看effective-pom的变体,它以递归方式列出所有子项目的所有依赖项,但除非另行明确指定,否则不会自动获取任何版本。一旦我有这样的列表(以xml格式),我可以在xml输出上应用一些xqueries来过滤掉我想要的内容并进行必要的更改。

编辑:我正在寻找没有<version>标签的依赖项。如果使用Ranges指定范围,对我来说仍然可以(?)

maven
1个回答
0
投票

我不知道直接从Maven处理这个问题的方法,但您可以尝试在整个POM文件中使用XPath。尝试使用此表达式:

//dependency[not(version)]

这将返回所有不包含子节点<dependency><version>节点。

© www.soinside.com 2019 - 2024. All rights reserved.