springboot-jsp打jar問題


前情提要】最近做了一個項目,項目是springboot+jsp結構的,但是在發布生產環境的時候又需要用maven打成jar包,但是一開始的默認配置都不成功。下面的文章就是具體的解決過程。


壹、項目結構

項目結構

貳、異常現象

使用的JDK為1.8,springboot版本為:

<parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>1.5.6.RELEASE</version>
	<relativePath/> 
</parent>

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
</properties>

打成的jar只包含class文件,沒有見資源文件引入。
沒有包含resourse的編譯結果

叄、解決辦法

1. 添加資源路徑的映射

<resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <!-- 開啟過濾,用指定的參數替換directory下的文件中的參數 -->
                <filtering>false</filtering>
            </resource>

            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>
                        **/*.java
                    </exclude>
                </excludes>
            </resource>

        </resources>

2. 修改maven編譯版本為1.4.2

只有使用這個版本打jar包才能解析jsp

3. 設置mainClass

<plugins>
            <plugin>
                <!-- maven插件 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.4.2.RELEASE</version>
                <configuration>
                    <mainClass>com.gt.LaysshApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>

4. 添加視圖配置(可選)

spring.mvc.view.prefix=/WEB-INF/jsp/

spring.mvc.view.suffix=.jsp

下面給出一個比較完整的maven編譯配置

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/**</include>
                </includes>
                <!-- 開啟過濾,用指定的參數替換directory下的文件中的參數 -->
                <filtering>false</filtering>
            </resource>

            <resource>
                <directory>src/main/webapp</directory>
                <targetPath>META-INF/resources</targetPath>
                <includes>
                    <include>**/**</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>
                        **/*.java
                    </exclude>
                </excludes>
            </resource>

        </resources>
        <plugins>
            <plugin>
                <!-- maven插件 -->
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>1.4.2.RELEASE</version>
                <configuration>
                    <mainClass>com.gt.MyApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

下面就是修改編譯配置之后的結果

正確的結果


【寫在后面的話】現代的模板解析引擎已經有了這么多了,為什么不試一下thymeleaf,但是在最近的項目中碰到了th:src標簽不解析的問題,目前還不清楚具體原因,而且相同的寫法在其他頁面都生效,真是怪異啊。鑒於目前還是又很多人使用springboot+jsp來進行開發,但是因為使用IDEA工具創建的SpringBoot項目本身是沒有webapp目錄的。如果我們想要添加webapp目錄的話,可以手動添加。下面就簡單的來說一下配置過程。


1.點開項目結構管理,點擊IDEA右上角的Project Structure

Project Structure

2.先點擊下圖中的+號,再點擊Web

2019071904

3.修改配置

下圖是修改配置前的默認配置
修改前的配置
下面將webapp配置到傳統的main目錄下
修改后的配置
配置Artifacts
最后的配置成功的結果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM