Springboot打war包并部署tomcat
说明
在springboot项目中使用的是springboot内嵌的tomcat容器,而war包是运行在外部的服务器容器中的
打Jar包
- 切换到你的项目目录文件夹下,执行
mvn install
命令开始打包 - 打包成功后,在项目目录下的
target
文件夹中会获得一个springboot-0.0.1-SNAPSHOT.jar
的 jar 包 - 执行命令
java -jar springboot-0.0.1-SNAPSHOT.jar
运行打包好的 jar 包
打War包
修改打包形式
修改pom.xml文件,添加以下内容,如果已经存在的,将其修改为war包形式。
1 | <packaging>war</packaging> |
移除嵌入式tomcat插件
在
pom.xml
里找到spring-boot-starter-web
依赖节点,在其中添加如下代码:1
2
3
4
5
6
7
8
9
10
11<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>添加servlet-api的依赖
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<!--添加tomcat依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<!-- 过时
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-servlet-api</artifactId>
<version>9.0.2</version>
<scope>provided</scope>
</dependency>-->
build脚本
1
2
3
4
5
6
7
8
9
10<build>
<!-- 应与application.properties(或application.yml)中context-path保持一致 -->
<finalName>war包名称</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
修改启动类
平常的项目启动类如下:
1
2
3
4
5
6
7
8
9
10
11import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}重写 Application启动类的初始化方法, 由于需要类似于web.xml的配置方式来启动spring上下文了,故需在启动类的同级添加一个SpringBootStartApplication类,其代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
/**
* 启动类,该类继承SpringBootServletInitializer,并且重写configure方法
*/
public class SpringBootStartApplication extends SpringBootServletInitializer {
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 这里sources的类就是启动类
return builder.sources(DemoApplication.class);
}
}合并的写法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
public class DemoApplication extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 这里sources的类就是启动类
return builder.sources(DemoApplication.class);
}
}
打包
在命令窗口通过以下命令mvn clean package
进行打包,在target目录下就可以找到相应的war包。
部署
将target下的war包拷贝到tomcat的webapps目录下。
使用外部Tomcat部署访问的时候,application.properties(或者application.yml)中配置将失效,请使用tomcat的端口和webapps下项目名进行访问
- server.port
- server.servlet.context-path
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 凉月の博客!
评论