具有默认值但可由外部属性文件自定义的Maven属性
我想要一个属性具有默认值但可由外部属性文件自定义的Maven属性,maven,Maven,我想要一个属性a和b,分别具有默认值org.a和org.b 我想用属性文件覆盖一个或两个。我将使用properties maven插件 我的pom是 <properties> <a>org.a</a> <b>org.b</b> </properties> <profiles> <profile> <id>load</id>
a
和b
,分别具有默认值org.a
和org.b
我想用属性文件覆盖一个或两个。我将使用properties maven插件
我的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>
mvn初始化的输出为
你好,org.a org.b
没关系
mvn初始化-Pload的输出为
实际:
[回声]你好${x.a}mod.b
期望
[回声]你好,org.a mod.b
如何实现我的期望?我想要避免像mvn initialize-Pload-Da=org.a
或mvn initialize-Db=mod.b
这样的命令,因为我想要从属性文件中读取自定义项。我不想从pom.xml中删除${x.a}
,因为我有时想修改a
此设置的目的是什么?您希望实现什么?@khmarbaise,我的应用程序有很好的默认值,我想保留这些默认值。接下来,我有几份詹金斯的工作。一个可以创建自定义应用程序服务器,另一个可以创建自定义数据库,其他两个都可以。我希望每个作业都以相同的方式调用构建,比如说mvn install-Pload
,但是属性文件会因作业而异。当maven build可以通过属性文件而不是命令行参数进行配置时,我希望能够很容易地维护Jenkins。为什么对不同的配置执行不同的作业?为什么不在一个作业中生成所有工件?@khmarbaise我的最后一个工件是数据库和应用程序服务器的配置战争。配置是在战争中建立的。我想让每个作业使用不同的默认配置生成一个稍微不同的WAR。在具体的环境背景下处理单个自给自足的战争更容易,战争+配置当然可以。但我会在一个作业中生成所有三个,这意味着mvn clean package
将生成三个不同的工件(war),并具有适当的配置。请看这里:
x.b=mod.b