如何将spring boot项目打包成jar包,并通过java -jar命令执行
一·修改打包方式:
<packaging>jar</packaging>
二·添加servlet-api的依赖:若你整合了servlet程序,就需要导入依赖,以下三个任选一个(没有整合就可以跳过)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>8.0.36</version>
</dependency>
<!-- 引入springboot框架中内嵌的tomcat,去解析jsp依赖-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
注意:< scope>…< /scope>是默认范围(可以省略),否则后面就会出问题,tomcat无法解析jsp
三·添加jar包的名称:
<finalName>springboot</finalName>
四·若springboot项目中若有jsp页面,必须手动指定最后编译的路径:(没有整合就可以跳过)
<resource>
<!--源文件位置-->
<directory>src/main/webapp</directory>
<!--指定编译到 META-INF/resources,该目录不能随便写-->
<targetPath>META-INF/resources</targetPath>
<!--指定要把哪些文件编译进去,**表示 webapp 目录及子目录,*.*表示所有文件-->
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!-- 把src/main/resources 下的所有配置文件编译到 classes 下面去-->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.*</include>
</includes>
</resource>
<!--src/main/java下的 mybatis 的 mapper.xml ,以及所有配置文件编译到 classes 下面去:需要才添加-->
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
原因:
1. springboot项目默认推荐使用前端引擎是thymeleaf;
要使用springboot集成jsp,需要手动指定最后编译的路径;
而且springboot集成jsp编译jsp的路径是springboot规定好的位置META-INF/resources
2. SpringBoot 要求 jsp 文件必须编译到指定的 META-INF/resources 目录下才能访问,否则访问不到。其它官方已经建议使用模版技术
五·修改springboot打包插件版本:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
</plugin>
注意:
1.有jsp页面时,必须用这个版本插件,不然后面会出现问题。
因为springboot高版本几乎不支持jsp。
2.即使这里爆红也不用管,能使用就行。
六·打包部署:
1.先用maven的clean命令清理
2.再用maven的package命令打包,在target目录下生成jar包
七·验证测试:
1.将jar包随便放到磁盘中的一个位置,并在dos系统(cmd)中进入jar包目录
2.再通过下面命令执行:
java -jar xxx.jar
3.浏览器访问验证:
1.访问地址:具体要根据你的主属性文件的设置来选择
http://localhost:[端口号]/[上下文根]/[请求路径]
http://localhost:[端口号]/[请求路径]
注意:
springboot项目打jar包,端口号和上下文根就是springboot核心配置文件中设置的值