Geo*_*ins 16 maven-2 properties substitution pom.xml
http://maven.apache.org/pom.html#Properties表示属性"值可在POM内的任何位置访问".
这应该是" 在POM内的大多数地方都可以访问"吗?
我可以指定依赖的版本没有问题,如下所示:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
但是项目本身的版本如何:
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>${myversion}</version>
<properties>
<myversion>8</myversion>
</properties>
<modules>
<module>alpha</module>
<module>beta</module>
</modules>
...
Run Code Online (Sandbox Code Playgroud)
如果我尝试这个<version>将不会取值8.这里我在pom中定义了$ {myversion}但是如果我在命令行中指定-Dmyversion = 8,情况似乎也是如此.
如果其中一个模块使用硬编码版本号指定其父级,如下所示:
<parent>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<version>8</version>
</parent>
Run Code Online (Sandbox Code Playgroud)
当我尝试构建然后当maven来看模块的pom时,它会说它无法找到版本8的给定父pom.
但是,如果我将父版本中的版本硬编码为8,而不是使用$ {myversion},那么一切正常.
所以在我看来,父pom的/ project/version标签不会发生属性替换.
是这种情况还是对我似乎看到的内容有其他解释?
问候,
/乔治
Pas*_*ent 31
Maven 2.x中不允许在设计中/project/parent/(groupId|artifactId|version)或在/project/(groupId|artifactId|version)设计中进行财产替换.
所以规则是:
project/version元素中的版本.project/parent/version子元素中的版本.${myversion}财产${project.groupId}和${project.version}用于模块间依赖关系.您将在maven用户列表上找到关于此主题的无限数量的线程(请参阅例如Pom父版本属性),我只是说任何尝试解决上述规则都是错误的并且不起作用.
parentMaven 3.1中将允许少版本.
| 归档时间: |
|
| 查看次数: |
21655 次 |
| 最近记录: |