2017-05-12 131 views
0

我正在使用Maven配置文件來區分特定於環境的配置的項目。我正在運行版本3.0.5。我們的目標是能夠通過從對應於一個激活屬性,像這樣的殼傳遞系統屬性來初始運行命令指定環境:使用系統屬性激活Maven配置文件

的pom.xml

<profiles> 
    ... 
    <profile><!-- Local Dev Environment --> 
     <id>local</id> 
     <activation> 
      <property> 
       <name>environment</name> 
       <value>local</value> 
      </property> 
     </activation> 
     <properties> 
      ... 
     </properties> 
    </profile><!-- End Local Dev Environment --> 
    ... 
</profiles> 

啓動命令

mvn exec:java -Denvironment=local

然而,配置文件沒有被激活(使用確認,它不產生輸出)。我對Maven很不喜歡,但不應該這樣工作嗎?

這是我的理解是與-D選項運行mvn允許我設置系統屬性(在這種情況下:environment應該等於local)運行應用程序時確定其隨後與Maven的POM的交叉引用這(符合要求的activation properties),然後運行該應用程序並激活這些配置文件。有沒有什麼我不在這裏?

回答

0

我有一個POM在這裏爲測試套件的小測試應用程序。我已經包含你的個人資料,並設置一個屬性來跳過測試。

我可以使用2種不同的方法啓動的情景模式(和跳過測試):

mvn clean package -Plocal 

mvn clean package -Denvironment=local 

我以前沒有使用過的exec插件,我只是看看現在,但我不認爲它應該改變配置文件的行爲。

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.test</groupId> 
    <artifactId>test-app</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 
    <dependencies> 
     <dependency> 
      <groupId>org.testng</groupId> 
      <artifactId>testng</artifactId> 
      <version>6.8.1</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
    </properties> 

    <profiles> 
     <profile><!-- Local Dev Environment --> 
      <id>local</id> 
      <activation> 
       <property> 
        <name>environment</name> 
        <value>local</value> 
       </property> 
      </activation> 
      <properties> 
       <maven.test.skip>true</maven.test.skip> 
      </properties> 
     </profile><!-- End Local Dev Environment --> 
    </profiles> 
</project> 
+0

我應該在我試圖直接激活資料中使用'-P'原來的問題已經提到過,並且也不成功,這使我覺得有兩種東西與我的POM或怪異的東西與我Maven安裝。 –

+0

我編輯了我的答案,包括一個適用於我的示例POM,但是我沒有使用'exec'插件嘗試過。 – Matt

相關問題