在Maven中查找属性定义的位置

5

我目前正在各种项目和git仓库中重构大量的pom.xml文件。 有时,项目A中的pom需要一个在项目B中定义的artifact,并且该artifact的版本由属性定义:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>artifact-from-b</artifactId>
    <version>${version.from.somewhere}</version>
</dependency>

有时候,pom本身或其父级pom中并没有明确定义版本属性。它可能隐藏在父级的父级的父级中...
我目前正在尝试找到一种简便的方法来解析像${version.from.somewhere}这样的属性,并找到它的定义位置。
有没有任何工具可以帮助我(除了Eclipse,对于某些棘手的属性会失败)?
谢谢!

1
@question_maven_com 有效的 POM 不会告诉你属性定义在哪里。 - Tunaki
你在想哪些“棘手的属性”?Eclipse一直对我都很好用。 - Tunaki
@khmarbaise:属性可以在任何地方定义。有时它们在项目本身中定义,有时它们在另一个项目的pom中定义,很难找到哪个“artifact”带来了它们。 - polhomarkho
@question_maven_com:之前不知道这个,很有趣!谢谢。 - polhomarkho
1
@question_maven_com 是的,但只有值,不包括它的定义位置。 - Tunaki
显示剩余5条评论
1个回答

5

这里有一个相关的答案Is there a way to trace origin of a property in maven pom?

那个答案建议使用mvn help:effective-pom -Dverbose=true,然后你就可以找到像com.example.model:2.1.0-SNAPSHOT这样的注释。

我尝试了一下,对我来说起作用了。

在我的情况下,该属性在com.example.model:2.1.0-SNAPSHOT的POM文件中的第407行中定义。

<dependency>
          <groupId>com.example</groupId>  <!-- com.example.model:2.1.0-SNAPSHOT, line 405 -->
          <artifactId>model</artifactId>  <!-- com.example.model:2.1.0-SNAPSHOT, line 406 -->
          <version>1.0.6</version>  <!-- com.example.model:2.1.0-SNAPSHOT, line 407 -->

它并不给我们它来自哪里的迹象。 - Harshit Panchal
1
是的,@HarshitPanchal,它确实显示了属性的来源:例如。<properties> <activemq.version>5.16.6</activemq.version> <!-- org.springframework.boot:spring-boot-dependencies:2.7.14, line 29 --> </properties> - Ben Ketteridge

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接