2015-11-05 170 views
-2

我需要創建2個maven配置文件,我可以在其中設置兩個不同的系統屬性。這些配置文件只是爲了設置系統屬性而不涉及任何插件。如何創建maven配置文件來設置系統屬性

<profile> 
    <id> profile1 to set system property 1</id> 
    .... set system property1 
</profile> 
<profile> 
    <id> profile2 to set system property 2</id> 
    .... set system property2 
</profile> 
+0

[在maven配置文件中設置系統變量]的可能重複(http://stackoverflow.com/questions/25604969/setting-a-system-variable-within-a-maven-profile) – kryger

回答

3

可以,但要看你需要什麼。這是做的最常見的方式:

<profiles> 
    <profile> 
     <id>profile-1</id> 
     <build> 
     <plugins> 
      <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>properties-maven-plugin</artifactId> 
      <version>1.0-alpha-2</version> 
      <executions> 
       <execution> 
       <goals> 
        <goal>set-system-properties</goal> 
       </goals> 
       <configuration> 
        <properties> 
        <my-prop>Yabadabadoo!</my-prop> 
        </properties> 
       </configuration> 
       </execution> 
      </executions> 
      </plugin> 
     </plugins> 
     </build> 
    </profile> 
    </profiles> 

但這只是Maven的執行過程中設置了系統屬性,所以如果你想要的(例如)該類把它撿起來:

package org.example; 

public class App { 
    public static void main(String[] args)  { 
     System.out.println("-->" + System.getProperty("my-prop")); 
    } 
} 

你需要與mvn -P profile-1 compile exec:java -Dexec.mainClass=org.example.App運行它,它會產生以下結果:

[INFO] --- exec-maven-plugin:1.4.0:java (default-cli) @ sys-prop --- 
-->Yabadabadoo! 

沒有compile目標運行,它會給你一個null,因爲exec插件在此實例中未綁定到任何構建階段。

但是,如果您需要系統屬性(比如說)單元測試,那麼surefire插件就是您需要的。