[英]Manually launched Spring Boot application from .jar not working properly
問題是當我從Intellij IDEA運行.jar文件(Spring Boot MVC應用程序)時,應用程序工作正常,但是當我嘗試從命令行運行相同的文件時,模板解析器無法找到模板(.html)文件。 這似乎是合理的,因為當我用文件存檔器打開.jar時,我沒有發現任何文件的痕跡。
Intellij如何讓它正常工作? 我怎么能這樣做? 我的項目結構:
它們位於'/ templates'文件夾中
在存檔器中打開.jar文件:
正如我所說,沒有.html文件,所以Intellij在運行.jar時如何添加它們?
pom.xml中:
<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>com.vlad.pet.contactlist</groupId>
<artifactId>web-app</artifactId>
<version>1.0-ALPHA</version>
<packaging>jar</packaging>
<name>web-app</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.6.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>com.vlad.pet.contactlist</groupId>
<artifactId>model</artifactId>
<version>1.1-inmemory</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity4</artifactId>
<version>2.1.2.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
從http://start.spring.io構建的普通Spring Boot應用程序將在src/main/resources
顯示templates文件夾。 這是因為默認情況下,該文件夾的內容可用於類路徑並打包在jar文件的根目錄下。 我猜你在IntelliJ中修改了項目,也選擇了src/main/webapp
目錄。 不幸的是,在包裝罐子時這不起作用。 您需要使用maven資源插件來指定要包含在jar文件中的其他目錄。
我的建議是去start.spring.io。 選擇Web
和Thymeleaf
作為依賴項,然后下載zip文件。 當您查看該文件時,您將看到默認結構以及任何插件的設置以使其工作。 在您的應用程序中鏡像該結構。
如果您無法更改項目結構,請查看maven-resources-plugin以獲取有關如何添加這些目錄的詳細信息。
通過在運行app后查看其控制台中的第一行,您可以看到IntelliJ正在做什么。 應該有IntelliJ調用的完整命令。
如何構建.jar? Maven的/搖籃? 也許pom / build腳本存在一些問題
它應該是評論,但我的聲譽太低了
嘗試使用該插件生成可執行jar:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<executable>true</executable>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
構建jar之后(例如mvn clean install),你可以運行jar作為java -jar ./target/project.jar
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.