背景
开发的项目是多模块的方式,工程结构如下图,接上文部署docker tomcat,因为要部署到tomcat上,所以spring-boot内置的tomcat等不能再使用,打包成war部署;
工程目录结构如下
目录结构
步骤
- 忽略掉spring-boot-starter-web引入的tomcat
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!--忽略内嵌tomcat,打包部署到tomcat-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
2 .引入开发环境下的tomcat,供开发使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<version>2.3.4.RELEASE</version>
<scope>provided</scope> <!--关键是scope改为provided,在编译和测试时有效 -->
</dependency>
- 继承SpringBootServletInitializer
在启动类目录下新建子类继承SpringBootServletInitializer
public class FangJianAdminServletInitializer extends SpringBootServletInitializer
{
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(FangJianAdminApplication.class);
}
}
- 启动类模块中 bootstrap模块pom配置,新增build,其余模块的一定要删掉这个build
<parent>
<groupId>com.fangjian.resturant-admin</groupId>
<artifactId>resturant-admin</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>com.fangjian.resturant-admin</groupId>
<artifactId>bootstrap</artifactId>
<packaging>war</packaging> #重点
……省略依赖管理……
<build>
<finalName>resturant-rest</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.3.4.RELEASE</version>
<configuration>
<mainClass>com.fangjian.resturant.admin.bootstrap.FangJianAdminApplication</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<!-- 把class打包jar作为附件 -->
<attachClasses>true</attachClasses>
</configuration>
<version>3.2.3</version>
</plugin>
</plugins>
</build>
- 在parent的pom.xml中
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin>
</plugins>
</build>
然后就可以打包了,打包