SpringBoot项目打包发布
SpringBoot项目可以是jar类型的maven项目,也可以是一个war类型的maven项目,取决于我们要不要整合jsp使用。但是不管哪种项目类型,已经不是我们传统意义上的项目结构了。
在本地使用SpringBoot的启动器即可访问我们开发的项目,如果我们将功能开发完毕之后,需要使用SpringBoot项目中的打包功能来将项目进行打包,SpringBoot项目打包在linux服务器运行:
SpringBoot打包发布jar
jar类型项目可以打成jar包
jar类型项目使用SpringBoot打包插件打包时,会在打包的jar中内置一个tomcat的jar。所以我们使用jdk直接运行jar项目即可。
jar项目中有一个功能,将功能代码放到其内置的tomcat中运行。我们可以直接使用浏览器访问即可。
打包流程
这里我是创建了一个SpringBoot项目来做测试,创建的时候添加了Web模块。然后在controller包下创建了一个ControllerDemo.java类。
@Controller
public class ControllerDemo {
@RequestMapping("/demo")
@ResponseBody
public String testDemo(String param){
return "test " + param;
}
}
启动SpringbootApplication.java类中Main方法,在浏览器中输入http://localhost:8080/demo?param=7
,结果如下。
接下来开始打包jar包。
导入SpringBoot打包插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork 的含义这里的 fork 设置为 true ,实际上是会在 maven 编译的时候新创建一个虚拟机执行。-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
将项目导出成jar包并更新pom文件
pom文件中项目类型设置为jar。
<packaging>jar</packaging>
使用maven package指令打包
将侧边栏的Maven调出,然后找到对应项目下的Lifecycle->package
按钮,点击即可。
打包成功并通过doc java -jar
运行
点击了package按钮稍等片刻,会在控制台看到BUILD SUCCESS
字样,即打包成功。
此时在Project下的target目录中可以看到打包好的项目jar包。
然后打开dos命令窗口,切换到jar包所在的目录下,用java -jar
命令去运行即可。
在浏览器中输如入http://localhost:8080/demo?param=9
,看响应结果。
SpringBoot打包发布jar包到此成功!
SpringBoot打包发布war包
war类型项目可以打成war包
在打包时需要将内置的tomcat插件排除,配置servlet的依赖。将war正常的放到tomcat服务器中运行即可。
如果我们当前的maven项目本身就是一个war类型的项目,直接打包即可。
但是如果我们当前的maven项目是jar类型的项目,我们需要将项目修改为war类型,修改项目的pom文件,使用packaging标签设置值为war。
并且需要在项目中创建webapp文件夹,并设置为资源文件夹。
导入SpringBoot打包插件
打开pom文件,进行插件的添加或者修改。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!--fork 的含义这里的 fork 设置为 true ,实际上是会在 maven 编译的时候新创建一个虚拟机执行。-->
<fork>true</fork>
</configuration>
</plugin>
</plugins>
</build>
将项目导出成war包并更新pom文件
pom文件中项目类型设置为war。
<packaging>war</packaging>
创建webapp文件夹并设置
webapp文件夹可加可不加,如果没有用到jsp文件,可以不加。
排除项目中自带的Tomcat插件和jsp servlet依赖
因为项目打包之后需要将项目放到一个Tomcat上运行,不再需要web启动中自动以来的tomcat插件。
<!--配置SpringBoot的web启动器-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--排除web启动中自动依赖的tomcat插件-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--
手动依赖tomcat插件,但是表明项目打包时该依赖不会被打进去,目的主要是保证开发阶段本地SpringBoot
项目可以正常运行
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!--打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。
相当于compile,但是打包阶段做了exclude操作-->
<scope>provided</scope>
</dependency>
SpringBoot启动类继承SpringBootServletInitializer
SpringBoot的启动类继承SpringBootServletInitializer,并重写configure方法。
package com.chen.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
@SpringBootApplication
public class SpringbootApplication extends SpringBootServletInitializer {
/**
* 重写配置方法
* @param builder
* @return
*/
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(SpringbootApplication.class);
}
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
使用maven package指令打包
使用package命令打包项目,并将war包放到tomcat下的webapps下,启动tomcat即可。(如果失败了,也可以先clean一下,然后再点击package)。
打包成功之后,可以在target目录下看到war包。
运行war包
将该war包放在Tomcat服务器的安装路径下的webapps目录下。然后运行bin目录的startup.bat文件,启动tomcat。
然后在浏览器中输入http://localhost:8080/springboot-0.0.1-SNAPSHOT/demo?param=88
,注意url地址中要加上项目名称哦!
注意:如果我们使用的是tomcat7则需要将javax.el-api-3.0.0.jar包放到tomcat下的lib目录中。
持续更新,如果错误,欢迎大家指出,共同学习...