2012-02-20 83 views
2

我想爲不同的maven配置文件提供不同的spring配置文件。 Filtering接近我想要的,但它只更改一個文件內的屬性。我想要的是包括/排除和根據配置文件重命名文件。例如,我有文件profile1-config.xml和profile2-config.xml。對於profile1,構建profile1-config.xml被重命名爲config.xml,profile2-config.xml被排除在構建之外。對於profile2構建,profile2-config.xml被重命名爲config.xml,profile1-config.xml被排除在構建之外。 這可能在maven中嗎?maven包含不同配置文件的不同文件

回答

0

你的想法不是這樣的,但是如果你修改它,它會做如下:

說你願意爲每個配置文件創建的conf文件夾和吮吸它的那些文件。

src/main/conf 
    |-/profile1/conf.xml 
    |-/profile2/conf.xml 

等等。配置您的配置文件接收這些文件。如果您打算爲某個服務器部署不同的配置,則最好使用其他模塊和戰爭覆蓋,因爲您無法一次在Nexus或本地存儲庫中部署同一模塊項目的多個配置。更重要的是,考慮到許多配置文件會混淆你的pom,並給構建帶來更多複雜性。

0

總的想法是在maven-resources-plugin中使用copy-resources目標。

您可以創建一個文件夾來保存你所有的個人資料,例如:

profiles 
    |-profile1 
    |-profile2 

而且在你的pom.xml,你可以有這些設置:

<profiles> 
     <profile> 
      <id>profile1</id> 
      <activation> 
       <activeByDefault>true</activeByDefault> 
      </activation> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-resources-plugin</artifactId> 
         <executions> 
          <execution> 
           <id>copy-resources</id> 
           <phase>validate</phase> 
           <goals> 
            <goal>copy-resources</goal> 
           </goals> 
           <configuration> 
            <outputDirectory>${basedir}/target/classes</outputDirectory> 
            <resources> 
             <resource> 
              <directory>${basedir}/profiles/profile1</directory> 
              <filtering>false</filtering> 
             </resource> 
            </resources> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 

     <profile> 
      <id>profile2</id> 
      <build> 
       <plugins> 
        <plugin> 
         <groupId>org.apache.maven.plugins</groupId> 
         <artifactId>maven-resources-plugin</artifactId> 
         <executions> 
          <execution> 
           <id>copy-resources</id> 
           <phase>validate</phase> 
           <goals> 
            <goal>copy-resources</goal> 
           </goals> 
           <configuration> 
            <outputDirectory>${basedir}/target/classes</outputDirectory> 
            <resources> 
             <resource> 
              <directory>${basedir}/profiles/profile2</directory> 
              <filtering>false</filtering> 
             </resource> 
            </resources> 
           </configuration> 
          </execution> 
         </executions> 
        </plugin> 
       </plugins> 
      </build> 
     </profile> 

相關問題