2014-06-18 18 views
9

Hier ist eine Herausforderung: Warum scheitert dieser Build?Warum schlägt maven-war-plugin für web.xml fehl, wenn ich es so konfiguriert habe, dass es bei fehlender web.xml nicht fehlschlägt?

ich konfiguriert haben Maven Maven-Krieg-Plugin nicht auf einer abscent web.xml-Datei zum Scheitern verurteilt, wie es scheint:

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>prepare-war</id> 
       <phase>prepare-package</phase> 
       <configuration> 
        <failOnMissingWebXml>false</failOnMissingWebXml> 
        <archiveClasses>false</archiveClasses> 
        <archive> 
         <manifest> 
          <addClasspath>true</addClasspath> 
          <classpathPrefix /> 
         </manifest> 
         <manifestEntries> 
          <Implementation-Build>${build.number}</Implementation-Build> 
          <Implementation-Title>${project.name}</Implementation-Title> 
          <Built-By>${user.name}</Built-By> 
          <Built-OS>${os.name}</Built-OS> 
          <Build-Date>${build.date}</Build-Date> 
         </manifestEntries> 
        </archive> 
        <webResources> 
         <resource> 
          <!-- this is relative to the pom.xml directory --> 
          <directory>./target/dist</directory> 
         </resource> 
        </webResources> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 

Aber trotz dieser Konfiguration hält wie andernfalls:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.4:war (default-war) on project com.specktro.orchid.operations.portal.frontend: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1] 

Ich habe eigentlich nicht die web.xml, also brauche ich es, um den Krieg ohne es zu montieren.

Ich habe versucht, eine gefälschte <webXml>none</webXml> in der Config-Zugabe, aber das hat nichts ändern ...

Was bin ich?

Antwort

6

Die Ausführungs-ID im POM lautet prepare-war. Maven führt seine eigene Standardausführung des War-Plugins für Projekte mit dem Pakettyp war aus. Die Standardausführung hat die ID default-war. Da das POM derzeit konfiguriert ist, wird das Ziel war zweimal ausgeführt.

Wenn Sie bei der Fehlermeldung aus:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.4:war (default-war) on project com.specktro.orchid.operations.portal.frontend: Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) -> [Help 1] 

Sie können die Ausführungs-ID sehen, die (default-war) in Klammern ausfällt. Wenn Sie die Ausführungs-ID zu default-war ändern, wird Ihr Problem verschwinden, und Sie werden nicht mehr zwei Ausführungen des Kriegsziels ausgeführt haben.

9

sollte diese Arbeit:

<plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
      <executions> 
       <execution> 
        <id>prepare-war</id> 
        <phase>prepare-package</phase> 
        <configuration> 
         <archiveClasses>false</archiveClasses> 
         <archive> 
          <manifest> 
           <addClasspath>true</addClasspath> 
           <classpathPrefix /> 
          </manifest> 
          <manifestEntries> 
           <Implementation-Build>${build.number}</Implementation-Build> 
           <Implementation-Title>${project.name}</Implementation-Title> 
           <Built-By>${user.name}</Built-By> 
           <Built-OS>${os.name}</Built-OS> 
           <Build-Date>${build.date}</Build-Date> 
          </manifestEntries> 
         </archive> 
         <webResources> 
          <resource> 
           <!-- this is relative to the pom.xml directory --> 
           <directory>./target/dist</directory> 
          </resource> 
         </webResources> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

Bitte beachten Sie, dass der <failOnMissingWebXml>false</failOnMissingWebXml> Abschnitt der Plugin-Konfiguration anstatt der Ausführung nach oben verschoben wurde.