2011-02-08 11 views
15

Zgodnie z naszymi zasadami budujemy tylko 1 słoik do rozmieszczania. wszystkie konfiguracje specyficzne dla środowiska są przechowywane osobno, a my budujemy je wszystkie razem naraz. więc pod naszym obecnym procesem Ant mamy plik właściwości dla każdego środowiska, przeglądamy go i tworzymy zestaw plików konfiguracyjnych dla każdego środowiska.Maven Buduj wiele profili za jednym zamachem

W moim obecnym pliku XML POM, mogę zbudować tylko jeden profil dostarczony w wierszu polecenia. Czy można to osiągnąć dzięki Maven?

Oto niektóre z odpowiedniej części 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> 

.....

Dzięki Prabhjot

+0

Oto opis sposobu obejścia tego problemu: https://stackoverflow.com/questions/12320322/build-multiple-artifacts-with-different-classifiers-at-once – stokito

Odpowiedz

19

Maven nie jest jak mrówka. Z mrówką możesz zrobić to, co chcesz, kiedy chcesz to zrobić. Z mavenem jest jasne i udokumentowane build life cycle, a jego celem jest zbudowanie jednego komponentu (i prawdopodobnie dołączenie innych artefaktów do kompilacji).

Co jednak planujesz zrobić, to zbudować jeden komponent wiele razy, ale z innymi parametrami. To nie pasuje do cyklu życia maven. To, co musisz zrobić, to spowodować, że jakiś proces zewnętrzny wykona iterację i wywoła robaka wielokrotnie z różnymi parametrami.

Klasycznym sposobem na osiągnięcie tego jest użycie skryptu powłoki, ale można również użyć Maven Invoker, aby uruchomić oddzielny proces z kontekstu Java lub Maven.

Powiązane problemy