我希望有一个属性a
和b
,其默认值分别为org.a
和org.b
。
我想用属性文件覆盖一个或两个。我将使用properties-maven-plugin
我的pom是
<properties>
<a>org.a</a>
<b>org.b</b>
</properties>
<profiles>
<profile>
<id>load</id>
<properties>
<a>${x.a}</a>
<b>${x.b}</b>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>validate</phase>
<goals><goal>read-project-properties</goal></goals>
<configuration><files><file>x</file></files></configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>initialize</phase>
<configuration>
<target><echo>hello, ${a} ${b} </echo></target>
</configuration>
<goals><goal>run</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
档案x内容:
x.b=mod.b
mvn initialize
的输出
你好,org.a org.b
没关系
mvn initialize -Pload
的输出
实际值:
[echo]你好,$ {x.a} mod.b
预期
[echo]你好,org.a mod.b
如何实现我的期望?我想避免像mvn initialize -Pload -Da=org.a
或mvn initialize -Db=mod.b
这样的命令,因为我想从属性文件中读取自定义。我不想从pom.xml中删除<a>${x.a}</a>
,因为我希望有时会修改a