2012-09-13 17 views

回答

0

您可以使用maven -P來選擇一個maven配置文件,然後選擇它的屬性文件。

<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <resource.prefix>dev</resource.prefix> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <resource.prefix>prod</resource.prefix> 
     </properties> 
    </profile> 
</profiles> 

現在訪問您的資源文件${resource.prefix}_config.properties。所以當配置文件生成時,將會採用資源文件prod_config.properties

1

對於90%的構建任務,有Maven。對於其他一切,有maven-antrun-plugin

我建議創建一個自定義的Ant腳本(可以嵌入在你pom.xml),提示用戶輸入並寫出使用Ant Input Task

3

更好的方法你的配置文件會被具有根據不同的屬性/ config文件環境。

  1. PROD
  2. 開發

保住二組值在兩個不同的文件。有時指定文件名稱。

+2

取決於用例 - 是的,這是多少Maven項目完成。您還可以將值直接放入您的pom.xml中作爲由配置文件激活並過濾到配置文件中的屬性。 – noahlz

0

除非你做了一些由noahz建議的螞蟻東西,否則你不能真正讓maven提示輸入。

如果你不想玩弄Profiles,你可以做什麼,就是在你的pom文件中使用屬性。

例子:

<project> 
    <groupId>abc</groupId> 
    <artifactId>def</artifactId> 
    <version>1.0-SNAPSHOT</version> 

    <properties> 
     <myProperty>someValue</myProperty> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       ... 
       <configuration> 
        <outputDir>${myProperty}</outputDir> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

,無論你想在POM文件中您可以使用性質和過濾資源時,你甚至可以使用屬性。

屬性可以默認是空的,然後有命令行設置一個新值:

mvn package -DmyProperty=anotherValue 

而且anotherValue將傳播到哪裏它在POM使用。


你可以閱讀關於Maven Resource Filtering here

如果你把一個文件src/main/resources這可能與上述屬性進行過濾:

src/main/resources/important-stuff.properties

some.nice.property = Nice! 
some.variable.property = ${myProperty} 

,這應該被添加到POM:

<build> 
    ... 
    <resources> 
     <resource> 
      <directory>src/main/resources</directory> 
      <filtering>true</filtering> 
     </resource> 
    </resources> 
    ... 
</build> 

的過濾important-stuff.properties最終會在target/classes和jar中看起來像這樣:

some.nice.property = Nice! 
some.variable.property = anotherValue 

資源過濾真的很方便。

相關問題