2011-02-08 3 views
15

Наша политика состоит только в том, чтобы построить только одну развернутую банку. все конфигурации, зависящие от среды, хранятся отдельно, и мы собираем их все вместе одновременно. поэтому в нашем текущем процессе Ant мы имеем файл свойств для каждой среды, перебираем их и создаем набор конфигурационных файлов для каждой среды.Maven Создайте несколько профилей за один раз

В моем текущем POM XML я могу создать только один профиль, поставляемый в командной строке. Можно ли достичь через Maven?

Вот некоторые из соответствующей части pom.xml

<!-- Define profiles here and make DEV as default profile --> 
<profiles> 

    <!-- dev Profile --> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 

    <!-- qa Profile --> 
    <profile> 
     <id>qa</id> 
     <properties> 
      <env>qa</env> 
     </properties> 
    </profile> 

    <!-- prod Profile --> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <env>prod</env> 
     </properties> 
    </profile> 

</profiles> 
... 


<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.4.3</version> 

    <executions> 
     <execution> 

      <phase>validate</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 

      <configuration> 

       <filters> 
        <filter>env/${env}.properties</filter> 
       </filters> 

       <outputDirectory>${project.build.directory}/config/${env} 
       </outputDirectory> 
       <resources> 
        <resource> 

         <filtering>true</filtering> 

         <directory>${basedir}/src/main/config/default 
         </directory> 
         <includes> 
          <include>*.xml</include> 
          <include>*.properties</include> 
         </includes> 
        </resource> 

.....

Спасибо, Prabhjot

+0

Здесь описано обходное решение для этого: https://stackoverflow.com/questions/12320322/build-multiple-artifacts-with-different-classifiers-at-once – stokito

ответ

19

Maven не нравится муравей. С муравьем вы можете в основном делать то, что хотите, когда хотите это сделать. С maven есть четкий и документированный build life cycle, и он нацелен на создание одного компонента (и, возможно, прикрепление других артефактов к сборке).

Однако вы планируете создавать один компонент несколько раз, но с разными параметрами. Это не вписывается в жизненный цикл maven. Так что вам нужно будет сделать, чтобы заставить какой-то внешний процесс выполнять итерацию и многократно называть maven с разными параметрами.

Классическим способом выполнения этого является использование сценария оболочки, но вы также можете использовать Maven Invoker для запуска отдельного процесса из контекста Java или Maven.

Смежные вопросы