2011-02-08 14 views
15

La nostra politica prevede di costruire solo 1 jar dispiegabile. tutte le configurazioni specifiche per l'ambiente sono tenute separate e noi le costruiamo tutte insieme contemporaneamente. così, con il nostro attuale processo Ant, disponiamo di un file di proprietà per ogni ambiente, passiamo su di essi e creiamo un set di file di configurazione per ogni ambiente.Maven Crea profili multipli in una volta

Nel mio XML POM corrente, sono in grado di creare un solo profilo fornito nella riga di comando. È possibile raggiungere attraverso Maven?

Ecco alcune della parte rilevante del 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> 

.....

Grazie, Prabhjot

+0

Qui è descritto un workaround per questo: https://stackoverflow.com/questions/12320322/build-multiple-artifacts-with-different-classifiers-at-once – stokito

risposta

19

Maven non è come formiche. Con la formica, puoi fondamentalmente fare ciò che vuoi quando vuoi farlo. Con Maven, c'è un chiaro e documentato build life cycle, ed è mirato a costruire un componente (e possibilmente associare altri artefatti alla build).

Quello che si prevede di fare è comunque creare un componente più volte, ma con parametri diversi. Questo non si adatta al ciclo di vita di Maven. Quindi, ciò che devi fare è fare in modo che alcuni processi esterni eseguano l'iterazione e chiamare ripetutamente Maven con parametri diversi.

Il modo classico per farlo sarebbe utilizzare uno script di shell, ma è anche possibile utilizzare Maven Invoker per avviare un processo separato da un contesto Java o Maven.

Problemi correlati