mvn pom profile properties

結論

mvn pom中,當有多個profile定義了同樣的property。生效的是激活的profile中最後一個proflie裏定義的值。 

示例說明

示例pom中,有三個profile都定義了名爲name的property。

這三個profile按順序分別是,Jim、Bob、Alice。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>me.guyongquan.learn</groupId>
    <artifactId>profile-vs-properties</artifactId>
    <version>1.0.0</version>
    <properties>
        <name>world</name>
    </properties>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.8</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <target>
                                <echo message="Hello, ${name}"/>
                            </target>
                        </configuration>
                    </execution>
                </executions>
            </plugin> 
        </plugins>
    </build>
    <profiles>
        <profile>
            <id>Jim</id>
            <properties>
                <name>Jim</name>
            </properties>
        </profile>
        <profile>
            <id>Bob</id>
            <properties>
                <name>Bob</name>
            </properties>
        </profile>
        <profile>
            <id>Alice</id>
            <properties>
                <name>Alice</name>
            </properties>
        </profile>
    </profiles>
</project>

沒有激活profile,輸出的是默認的name world 

$ mvn package | grep echo
     [echo] Hello, world

激活Bob和Jim。因爲Bob的定義再Jim後面,輸出的是Bob。跟激活順序、即-P參數順序無關。 

$ mvn package -PBob -PJim | grep echo
     [echo] Hello, Bob

$ mvn package -PJim -PBob | grep echo
     [echo] Hello, Bob

激活Bob和Alice。Alice定義在後,輸出Alice。 

$ mvn package -PBob -PAlice | grep echo
     [echo] Hello, Alice
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章