Mam dwie wojny, które rozmieszczam w dwóch maven projektach przy użyciu wtyczki tomcat. Chcę to zrobić w jednym kroku i być w stanie wdrożyć więcej niż jedną wojnę w jednym projekcie. Jak mogę to zrobić? jakieś sugestie?Jak mogę wdrożyć wiele wojen za pomocą wtyczki tomcat w programie maven?
Odpowiedz
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")
można stworzyć „super wojny”, a następnie wdrożyć, a także
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
Dodałem kilka właściwości do odpowiedzi, możesz określić ścieżkę względną za pomocą $ {property}/path/to/reference –