具有默认值但可由外部属性文件自定义的Maven属性

时间:2016-04-18 14:38:58

标签: maven

我希望有一个属性ab,其默认值分别为org.aorg.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.amvn initialize -Db=mod.b这样的命令,因为我想从属性文件中读取自定义。我不想从pom.xml中删除<a>${x.a}</a>,因为我希望有时会修改a

0 个答案:

没有答案