在Maven中覆盖属性键的值

时间:2018-08-09 07:02:04

标签: java maven

我有包含以下内容的全局属性文件(global.properties)

app.server.username=globalUser

我还有一个名为sample.properties的属性文件,具有以下提到的内容

app.server.username=sampleUser
app.server.port=443

现在,我需要使用Maven将app.server.username键值从“ sampleUser”替换为“ globalUser”,并且打包了jar文件。

这2个属性文件位于Java项目的同一文件夹中。

因此,在Maven构建阶段(或在打包阶段),Maven应该引用global.properties,在sample.properties中搜索所有键值对(在其中定义)。并替换所有匹配键的值。

因此,在Maven构建之后,sample.properties文件应具有以下提及的内容

app.server.username=globalUser
app.server.port=443

请建议如何在Maven中进行操作?

1 个答案:

答案 0 :(得分:1)

您可以为此使用属性插件,指定要读取的多个文件:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>properties-maven-plugin</artifactId>
    <version>1.0.0</version>
    <executions>
        <execution>
            <phase>initialize</phase>
            <goals>
                <goal>read-project-properties</goal>
            </goals>
            <configuration>
                <files>
                    <file>global.properties</file>
                    <file>sample.properties</file>
                </files>
            </configuration>
        </execution>
    </executions>
</plugin>

从我的测试结果来看,后一个文件将导致重复的属性键覆盖前一个。因此,只需确保您的文件以正确的顺序列出即可。