2014-04-16 22 views
21

Ich habe das Beispiel gs-convert-jar-to-ward von spring-io verwendet. Es beschreibt, wie man Kriegsverpackungen in einem Spring-Boot-Projekt erzeugt.Spring-Boot ohne Eltern pom.xml kann keine Kriegsverpackung erzeugen

Die Spring-Boot-Dokumentation ermöglicht die Verwendung eigener Eltern-Poms, wodurch das vordefinierte Eltern-Pom für alle Spring-Boot-Projekte weggelassen wird. Die folgende Abhängigkeit muss hinzugefügt werden:

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <!-- Import dependency management from Spring Boot --> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-parent</artifactId> 
      <version>1.0.1.RELEASE</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

Ich habe diese Änderung (und nur diese Änderung) auf das Beispiel angewendet. Danach ist es nicht mehr möglich den Krieg zu generieren. Ich erhalte folgende Fehlermeldung:

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

die komplette Liste der modifizierten pom.xml ist:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.springframework-sample</groupId> 
    <artifactId>gs-convert-jar-to-war</artifactId> 
    <version>0.1.0</version> 
    <packaging>war</packaging> 

    <dependencyManagement> 
     <dependencies> 
      <dependency> 
       <!-- Import dependency management from Spring Boot --> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-parent</artifactId> 
       <version>1.0.1.RELEASE</version> 
       <type>pom</type> 
       <scope>import</scope> 
      </dependency> 
     </dependencies> 
    </dependencyManagement> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
      </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-tomcat</artifactId> 
      <scope>provided</scope> 
      </dependency> 
    </dependencies> 

    <properties> 
     <start-class>hello.Application</start-class> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

    <repositories> 
     <repository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>http://repo.spring.io/libs-milestone</url> 
     </repository> 
    </repositories> 

    <pluginRepositories> 
     <pluginRepository> 
      <id>spring-milestones</id> 
      <name>Spring Milestones</name> 
      <url>http://repo.spring.io/libs-milestone</url> 
     </pluginRepository> 
    </pluginRepositories> 

</project> 

Gibt es eine Idee, das Problem zu überwinden?

In meinem Projekt werde ich meine eigenen Eltern Pom verwenden, weil es eine Menge Dinge über das Unternehmen definiert.

Antwort

53

Sie haben das übergeordnete Element entfernt, sodass Sie die Konfiguration des WAR-Plugins verloren haben. Hier ist es:

Siehe here für den Quellcode.

+0

Danke für den Hinweis. Ich habe das fehlende Plugin hinzugefügt, aber dann klagt es über fehlende web.xml: Fehler beim Zusammenfügen von WAR: webxml-Attribut ist erforderlich (oder bereits vorhandenes WEB-INF/web.xml, wenn es im Update-Modus ausgeführt wird). Wenn ich das Spring-Boot-basierte Elternelement zur Verfügung stelle, funktioniert es ohne eine eigene Deklaration einer web.xml. –

+0

Sie müssen vergessen haben, failOnMissingWebXml = false (wie in der obigen Antwort) hinzuzufügen? –

+1

Sorry, die Ursache war blöd: Ich habe packaging "war" und das maven-jar-plugin benutzt, welches ich durch maven-war-plugin ersetzt habe. Jetzt funktioniert es. Danke für den Tipp. –