2009-07-27 6 views

Odpowiedz

6

Nie jestem w stanie tego przetestować, ale są dwa podejścia, które mogę wymyślić. Albo może pracować dla ciebie.

Wariant 1:

W jednym z projektów można określić konfigurację wtyczki Tomcat. W poniższym fragmencie są zdefiniowane dwie egzekucje, obie związane z fazą testu przed integracją (może to nie być najlepsza faza, aby to zrobić, ale wydaje się to dobrym punktem wyjścia, ponieważ wojna została zapakowana). Każde wykonanie wdroży wojnę zdefiniowaną we właściwości warFile konfiguracji.

<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> 

Opcja 2: To jest chyba lepszym rozwiązaniem. Zdefiniuj jedno wykonanie w każdej wojnie (możesz pominąć element warFile, ponieważ można użyć wartości domyślnej). Następnie można zdefiniować trzeci projekt z deklaracją modułów odnoszącą się do każdego projektu wojennego. Kiedy rodzic zostanie zbudowany, obie wojny zostaną zbudowane, a wojny wdrożone.

Deklaracja moduły dla trzeciego projektu:

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

A config dla każdego projektu War:

<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 ma pewne właściwości, których można użyć, aby uniknąć ścieżki bezwzględnej.

${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

hej, bardzo dziękuję za sugestię. Mam pytanie uzupełniające. w pom zamiast podania absolutnej ścieżki do pliku wojny istnieje sposób, w jaki plik wojenny można pobrać z lokalnego repozytorium lub ścieżki zdalnego repozytorium. – nagl

+0

Dodałem kilka właściwości do odpowiedzi, możesz określić ścieżkę względną za pomocą $ {property}/path/to/reference –

0

można stworzyć „super wojny”, a następnie wdrożyć, a także