直接使用maven打包,生成的jar包后,直接运行,访问会出现404。无法访问,这是因为maven插件没有把jsp页面编译到jar包中(因为springboot不支持jsp了,所以不会编译jsp页面)。
问题呈现如下:
访问主页结果如下:
打开我们的jar包,会发现jsp文件未被添加到jar包中
再看看前端静态文件是否存在?可以发现前端静态文件还是存在的。
接着我们测试一下项目接口是否正常运行?我测试了一下发现项目也能正常运行。
因此得出结论,就是maven在编译项目为jar包时,没有编译jsp文件,导致项目没有前端页面,出现404的状况,那么我们要做的事情就是让maven去编译jsp页面,并且让它把jsp打到jar包中。
因此我们需要修改maven的版本,一般我们的版本如下:
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
那么现在我们把它修改一下,变成固定的版本:
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
<configuration>
<!-- 设置启动类 -->
<mainClass>com.xx.xx.XXXXXXApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
修改了maven版本还是不行,还需要让maven编译时能把资源添加到jar包中,因此还需要添加如下配置:
<resources>
<!-- 前端静态资源 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
<!-- jsp页面 -->
<resource>
<directory>src/main/webapp</directory>
<!--这里必须是META-INF/resources-->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
还需要把jsp的依赖添加到maven中,如下:
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
在idea找到maven的这个打包按钮,就可以打包了
打完jar包后我们查看一下,jar中是否有jsp文件,是否有静态文件?
jsp页面
前端静态文件
最后访问一下项目主页