由于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_codemerchandise arget -> [Help 1]