2014-03-01 8 views
9

Ich möchte eine Spring-Boot-Anwendung als Glas zu packen, und zwar mit mvn package.Package eine Spring-Boot-Anwendung einschließlich JSPs und statische Ressourcen

Dadurch entsteht ein Glas, das weder /WEB-INF/jsp noch /src/main/webapp/resources enthält.

Wie kann ich sicherstellen, dass mein Glas alles enthält, was benötigt wird?

Hier meine aktuellen pom.xml:

<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-samples</artifactId> 
    <version>1.0.0.RC3</version> 
</parent> 

<packaging>jar</packaging> 

<properties> 
    <main.basedir>${basedir}/../..</main.basedir> 
    <m2eclipse.wtp.contextRoot>/</m2eclipse.wtp.contextRoot> 
</properties> 

<dependencies> 

    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>${project.groupId}</groupId> 
     <artifactId>spring-boot-starter-tomcat</artifactId> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.tomcat.embed</groupId> 
     <artifactId>tomcat-embed-jasper</artifactId> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>commons-dbcp</groupId> 
     <artifactId>commons-dbcp</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.tomcat</groupId> 
     <artifactId>tomcat-jdbc</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
    </dependency> 

    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.3-1101-jdbc41</version> 
    </dependency> 

</dependencies> 

<!-- Package as an executable JAR --> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-surefire-plugin</artifactId> 
      <configuration> 
       <useSystemClassLoader>false</useSystemClassLoader> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<!-- Allow access to Spring milestones and snapshots --> 
<!-- (you don't need this if you are using anything after 1.0.0.RELEASE) --> 
<repositories> 
    <repository> 
     <id>spring-snapshots</id> 
     <url>http://repo.spring.io/snapshot</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
    <repository> 
     <id>spring-milestones</id> 
     <url>http://repo.spring.io/milestone</url> 
     <snapshots> 
      <enabled>true</enabled> 
     </snapshots> 
    </repository> 
</repositories> 
<pluginRepositories> 
    <pluginRepository> 
     <id>spring-snapshots</id> 
     <url>http://repo.spring.io/snapshot</url> 
    </pluginRepository> 
    <pluginRepository> 
     <id>spring-milestones</id> 
     <url>http://repo.spring.io/milestone</url> 
    </pluginRepository> 
</pluginRepositories> 
<artifactId>com.example.app</artifactId> 

Antwort

9

Das folgende Beispiel arbeitet mit Frühlings-Boot-1.3.3.RELEASE: https://github.com/ghillert/spring-boot-jsp-demo

Der Schlüssel ist, um den statischen jsp Inhalt in setzen:

/src/main/resources/META-INF/resources/WEB-INF/jsp 

und sicherzustellen, dass Sie die Ansicht Präfix definieren/suffix in Ihrer application.properties:

spring.mvc.view.prefix=/WEB-INF/jsp/ 
spring.mvc.view.suffix=.jsp 
+0

Dies funktioniert nicht für mich :( – Arun

5

Gibt es einen Grund, warum Sie nicht den Krieg Verpackungsart verwenden kann? https://maven.apache.org/plugins/maven-war-plugin/usage.html Ich würde empfehlen, den War Packaging-Typ zu verwenden und Standard-Maven-Web-Anwendungsstruktur zu verwenden.

Wenn Sie wirklich das JAR-Plugin für Ihre Webanwendung verwenden möchten, müssen Sie es für Ihr Projekt konfigurieren. Aufgrund Ihrer Buchung verstehe ich Ihre Struktur nicht und kann Ihnen kein Beispiel geben. Überprüfen Sie die Verwendung von Glas-Plugin hier aus: https://maven.apache.org/plugins/maven-war-plugin/usage.html

+2

Sie müssen Kriegsverpackung verwenden, aber ansonsten sieht alles gesund aus. Siehe [docs] (https://github.com/spring-projects/spring-boot/blob/master/spring-boot/README.md#jsp- limitations) in JSP-Einschränkungen. –

+3

Ich habe es mit Kriegsverpackung versucht, und es funktioniert. java -jar myfile.war sah ein bisschen komisch aus, aber es funktioniert. Vielen Dank ! – yglodt

1

Um ein lauffähiges JAR mit Federverschluß zu erstellen, verwenden Sie die Feder-boot-Maven-Plugin in Ihrem pom.xml

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

Vielleicht haben Sie eine haben wollen schau dir meine Beispielanwendung http://info.michael-simons.eu/2014/02/20/developing-a-web-application-with-spring-boot-angularjs-and-java-8/ an (Quelle ist auf GitHub, App ist live und läuft von einem JAR).

Eine Sache, die Sie beachten sollten: JSP von JAR funktioniert nicht aufgrund einiger eingebetteter Tomcat-Probleme. Ich benutze Thymeleaf. Wenn Sie JSP benötigen, bleiben Sie bei der WAR-Bereitstellung.

3

Ändern Sie Ihr Build-Tag zu

<build> 
<resources> 
      <resource> 
       <directory>${basedir}/src/main/webapp</directory> 
       <includes> 
        <include>**/**</include> 
       </includes> 
      </resource> 
      <resource> 
       <directory>${basedir}/src/main/resources</directory> 
       <includes> 
        <include>**/**</include> 
       </includes> 
      </resource> 
     </resources> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <useSystemClassLoader>false</useSystemClassLoader> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
Verwandte Themen