【 前情提要 】最近做了一个项目,项目是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文件,没有见资源文件引入。
<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>
只有使用这个版本打jar包才能解析jsp
<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>
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目录的话,可以手动添加。下面就简单的来说一下配置过程。
下图是修改配置前的默认配置
下面将webapp配置到传统的main目录下