2009-07-27 10 views

risposta

6

Non sono in grado di testare questo, ma ci sono due approcci che riesco a pensare. O può funzionare per te.

Opzione 1:

In uno dei progetti è possibile definire la configurazione per il plugin Tomcat. Nello snippet qui sotto ci sono due esecuzioni definite, entrambe legate alla fase di preintegrazione (questa potrebbe non essere la fase migliore per farlo, ma sembra un buon punto di partenza dato che la guerra sarà stata confezionata). Ogni esecuzione distribuirà la guerra definita nella proprietà warFile della sua configurazione.

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>tomcat-maven-plugin</artifactId> 
     <version>1.0-beta-1</version> 
     <executions> 
      <execution> 
      <id>deploy1</id> 
      <phase>pre-integration-test</phase> 
      <configuration> 
       <warFile>path/to/my/warFile1.war</warFile> 
      </configuration> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>deploy2</id> 
      <phase>pre-integration-test</phase> 
      <configuration> 
       <warFile>path/to/my/warFile2.war</warFile> 
      </configuration> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

Opzione 2: Questo è probabilmente l'approccio migliore. Definisci un'esecuzione in ogni guerra (puoi omettere l'elemento warFile in quanto può essere usato di default). È quindi possibile definire un terzo progetto con una dichiarazione di moduli che fa riferimento a ciascun progetto di guerra. Quando viene costruito il genitore, entrambe le guerre saranno costruite e le guerre schierate.

La dichiarazione moduli per il terzo progetto:

<modules> 
    <module>relative/path/to/war1</module> 
    <module>relative/path/to/war2</module> 
<modules> 

E la configurazione per ogni progetto di guerra:

<project> 
    ... 
    <build> 
    ... 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>tomcat-maven-plugin</artifactId> 
     <version>1.0-beta-1</version> 
     <executions> 
      <execution> 
      <id>deploy</id> 
      <phase>pre-integration-test</phase> 
      <goals> 
       <goal>deploy</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    ... 
    </build> 
    ... 
</project> 

Maven ha alcune proprietà che è possibile utilizzare per evitare percorsi assoluti.

${maven.repo.local} will resolve to the local repository 
${project.basedir} is the project directory (the root of the project) 
${project.build.directory} is the build directory (default is "target") 
${project.build.outputDirectory} is the directory where compilation output goes (default is "target/classes") 
+0

ehi, vi ringrazio molto per il suggerimento. Ho avuto una domanda successiva. nel pom invece di dare un percorso assoluto al file war esiste un modo in cui il file war può essere prelevato dal repository locale o dal percorso del repository remoto. – nagl

+0

Ho aggiunto alcune proprietà alla risposta, è possibile specificare un percorso relativo utilizzando $ {property}/path/to/reference –

0

è possibile creare una "war super" e distribuirlo, così

Problemi correlati