2016-05-21 10 views
0

Ich versuche eine Webanwendung zu erstellen, die auf mehreren maven Modulen basiert. Eines der Module heißt "web" und ist allein dafür verantwortlich, einen Krieg zu verpacken, der mithilfe des tomcat7-maven-plugins auf einem Tomcat bereitgestellt werden soll. Ich habe folgende Module in meinem parent.pom definiert:tomcat-maven-plugin mit mehreren Modulen, die nur einen Krieg aufbauen

  • gemeinsame
  • Persistenz
  • Persistenz-embedded
  • Service
  • Rest
  • web

Alle von ihnen sind in einem Web-Anwendung-Krieg kombiniert, hat das Web-Modul Verpackung in den Krieg gesetzt. Das Problem ist, dass meine War-Datei für jedes Submodul (und das Haupt-Eltern-Modul) immer und immer wieder bereitgestellt wird, wenn ich mvn tomcat7: redeploy starte, was zu 7 Bereitstellungen führt. Anscheinend ist das nicht so, wie es sein sollte. Die tomcat7-Maven-Plugin-Konfiguration sieht derzeit wie folgt aus:

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <ignorePackaging>true</ignorePackaging> 
     <url>http://localhost:8080/manager/text</url> 
     <server>tomcatServer</server> 
     <path>/webapp</path> 
     <warFile> /home/username/dev/maven-multimodule-example/web/target/maven-multimodule-example-1.0-SNAPSHOT.war</warFile> 
     <username>admin</username> 
     <password>password</password> 
    </configuration> 
</plugin> 

Wie Sie sehen können, ich brauche die warFile angeben (die keine Lösung, sondern ein Hack, weil ich nicht $ verwenden können {Projekt .basedir}, die zum Submodul-dir führen würde), damit es funktioniert.

Wenn ich jedoch die Webapplikation mit mvn tomcat7: run ausführe, sieht das ganz gut aus, weil die anderen nicht warmerzeugenden Module vom Plugin übersprungen werden.

Wie kann ich das Plugin den richtigen Weg zur Bereitstellung der WAR-Datei nur einmal konfigurieren?

+0

Wo genau haben Sie das Tomcat-Plugin konfiguriert? Welches POM, welche Sektion im POM? – dunni

+0

in der Haupt-Eltern-Pom – Daniel

Antwort

1

Jede Konfiguration innerhalb des Abschnitts <build> eines übergeordneten POM wird vererbt und somit in allen untergeordneten Modulen ausgeführt. Wenn Sie also nur einmal bereitstellen möchten, fügen Sie sie nur einem POM hinzu (z. B. dem Web-POM).

0

Dank der Hilfe von Dunni habe ich mein Missverständnis bemerkt, wie Multimodul-Projekte gebaut werden. Jetzt habe ich die Plugin-Konfiguration im Web-Modul platziert und eine Ausführung hinzugefügt, die an die Installationsphase gebunden ist, damit ich das gesamte Projekt neu erstellen und es auf meinem Tomcat bereitstellen kann. Offensichtlich kümmert sich Maven um die right execution order der Module.

<plugin> 
    <groupId>org.apache.tomcat.maven</groupId> 
    <artifactId>tomcat7-maven-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
     <url>http://localhost:8080/manager/text</url> 
     <server>tomcatServer</server> 
     <path>/webapp</path> 
     <warFile>${project.basedir}/target/${project.parent.artifactId}-${project.parent.version}.war</warFile> 
     <username>admin</username> 
     <password>password</password> 
    </configuration> 
    <executions> 
     <execution> 
      <id>redeployafterinstall</id> 
      <phase>install</phase> 
      <goals> 
       <goal>redeploy</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 
Verwandte Themen