我有多模块项目,对不同的模块版本有很多依赖关系。目前版本是硬编码的,需要手动更改它们。因此,我决定将它们全部放入一个属性文件中,并在项目构建期间从中获取属性值。
以下是我如何尝试这样做的:
root pom.xml
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>./version.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>文件version.properties
module1.version=1.1
module2.version=1.8
module3.version=5.4模块pom.xml示例
<properties>
<module1.project.version>${module1.version}</module1.project.version>
</properties>
<parent>
<groupId>com.mymodule</groupId>
<artifactId>test</artifactId>
<version>${module1.version}</version>
<relativePath>../pom.xml</relativePath>
</parent>生成失败的有:
未能在项目ccm上执行目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version (解析版本):目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version的执行解析版本失败。org.apache.maven.lifecycle.LifecycleExecutionException: 1 NullPointerException -> Help 1未能在项目ccm上执行目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version (解析-版本):执行解析-目标org.codehaus.mojo:build-helper-maven-plugin:1.7:parse-version失败。
如何从文件中读取一些属性并以正确的方式配置pom.xml?
发布于 2013-09-02 13:31:22
最后似乎很简单。我用的是initialize相位。将其更改为validate修复了以下问题:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<phase>validate</phase>发布于 2013-09-02 13:17:27
不能在<parent>元素中使用属性/变量替换。
这里的主要原因是Maven必须读取父POM才能开始展开属性,因为父POM也可能定义属性。
https://stackoverflow.com/questions/18574025
复制相似问题