2010-10-11 84 views
1

[減小爲簡單起見]定製屬性

  • 我有幾個的Maven模塊項目
  • 甲模塊具有一個屬性文件,其內容生成過程中被過濾
  • 有一組屬性可以分組
  • 給定內部版本中只存在一組屬性
  • 所有組具有相同的屬性,只有它們的值在組之間變化
  • parent 
    +- pom.xml 
    +- foo 
        +- src/main/resources/test.properties 
    

    我在父pom.xml設置的配置文件。每個配置文件都由命令行參數激活,併爲該組的屬性設置值。

    mvn clean compile -Dgroup1=true 
    

    問題是我必須複製組之間的整個配置文件。我只想爲每個組定義<properties>,並使用單個配置文件來控制構建順序,插件和其他內容。

    任何人都知道這是否可以做到?

    回答

    0

    我認爲這可以通過使用<pluginManagement>來完成。您將在<pluginManagement>部分中的父級pom中聲明構建順序,插件和其他內容,然後在每個孩子中,您會將<plugin>與適當的properties一起標記。

    2

    喜歡你只想創建一組不同的屬性文件的每一個配置,這樣的事情聽起來對我說:

    <profiles> 
        <profile> 
         <id>group1</id> 
         <build> 
          <filters> 
           <filter>src/main/resources/propertyfile1.txt</filter> 
           <filter>src/main/resources/propertyfile2.txt</filter> 
          </filters> 
         </build> 
        </profile> 
        <profile> 
         <id>group2</id> 
         <build> 
          <filters> 
           <filter>src/main/resources/propertyfile3.txt</filter> 
           <filter>src/main/resources/propertyfile4.txt</filter> 
          </filters> 
         </build> 
        </profile> 
    </profiles> 
    

    現在每個配置文件爲您提供了資源過濾不同的值。


    如果您還需要在POM中的值,你將不得不做一些處理,可能使用類似的maven properties plugin什麼的。把插件定義的肉在主構建元素:

    <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>properties-maven-plugin</artifactId> 
        <version>1.0-alpha-2</version> 
        <executions> 
         <execution> 
          <phase>initialize</phase> 
          <goals> 
           <goal>read-project-properties</goal> 
          </goals> 
         </execution> 
        </executions> 
    </plugin> 
    

    和配置文件加載在個人簡介:

    <profile> 
        <id>group1</id> 
        <build> 
         <plugins> 
          <plugin> 
           <groupId>org.codehaus.mojo</groupId> 
           <artifactId>properties-maven-plugin</artifactId> 
           <configuration> 
            <files> 
             <file>src/main/resources/propertyfile1.txt</file> 
             <file>src/main/resources/propertyfile2.txt</file> 
            </files> 
           </configuration> 
          </plugin> 
         </plugins> 
        </build> 
    </profile>