• 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
    最后的配置成功的结果

  • 相关阅读:
    如何禁用 Azure 虚拟机的日期时间同步
    Java 如何启用 ARM 虚拟机诊断
    File类的源码学习
    Trie树学习
    Hadoop自带Sort例子分析
    java.io.IOException: Illegal partition for 67 (-1)
    Java IO、网络编程、NIO、Netty、Hessian、RPC、RMI的学习路线
    MapReduce中的排序(附代码)
    CAP理论学习
    Harvard数据库课程CS 265: Research Topics in Database Systems
  • 原文地址:https://www.cnblogs.com/eelve/p/11333895.html
Copyright © 2020-2023  润新知