由于springboot 内嵌了tomcat,打包成war包需要剔除tomcat,防止其影响项目在其他web 容器运行。
1、修改 pom.xml
Packaging 修改为war: <packaging>war</packaging>
在 <dependencies></dependencies> 标签加入以下代码
<dependencie>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependencie>
在 <project></project>加入以下代码
<build>
<finalName>project_name</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Scope:provided 表示打包是省略 此项
- 修改启动类
要想springboot项目知道我们的意图,so,我们要引导我们的项目,告诉他我们要打包成war包,在此我们需要继承SpringBootServletInitializer类。
- 打包
右键项目 →Run as → Maven build
在 Goals 栏位输入 clean package,点击Run ,在项目的target 文件夹会生成对应的 war包。
另外,如果有外部引入的jar包,
1.在resources下面新建lib文件夹,并把jar包文件放到这个目录下
2.在pom文件定义几个依赖指向刚才引入的文件
<dependency>
<groupId>com.aliyun.alicom</groupId>
<artifactId>alicom-mns-receive-sdk</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/alicom-mns-receive-sdk-1.0.0.jar</systemPath>
</dependency>
<dependency>
<groupId>com.aliyun.mns</groupId>
<artifactId>aliyun-sdk-mns</artifactId>
<version>1.1.8</version>
<scope>system</scope>
<systemPath>${project.basedir}/src/main/resources/lib/aliyun-sdk-mns-1.1.8.jar</systemPath>
</dependency>
注意:重点是systemPath这个路径必须得是你jar的路径。其他的按照套路填就行,要求不是太严格。${project.basedir}只是一个系统自己的常量,不用管它
报错:
[INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 4.684 s [INFO] Finished at: 2020-04-09T13:49:37+08:00 [INFO] Final Memory: 14M/155M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.6.1:clean (default-clean) on project merchandise: Failed to clean project: Failed to delete D:\java_code\merchandise\target -> [Help 1]

参考: https://www.jianshu.com/p/bb6ad174a3c5
https://www.cnblogs.com/liukunjava/p/9577768.html