springboot進行war包的package操作參考:
https://blog.csdn.net/zhangcongyi420/article/details/100065407
1、添加servlet依賴
<!--添加servlet-api的依賴,用來打war包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
2、添加tomcat依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
3、保留改造前和改造後的啓動類,分別命名爲MainApp和MainWebApp:
@SpringBootApplication
public class MainApp {
public static void main(String[] args) {
SpringApplication.run(MainApp.class,args);
}
}
@SpringBootApplication
public class MainWebApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(MainApp.class,args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(MainApp.class);
}
}
4、pom中添加maven編譯插件,並指定啓動類(使用變量進行動態選擇啓動類):
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>${main.class}</mainClass>
</configuration>
</plugin>
</plugins>
</build>
5、添加pom中的變量
<profiles>
<!-- 定義了多種屬性文件,在指定的id下,選擇性使用指定屬性文件下定義的屬性(變量)等 -->
<profile>
<id>dev</id>
<activation>
<!-- 默認激活 -->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<!-- 開發 -->
<packaging.type>jar</packaging.type>
<main.class>xyz.jangle.MainApp</main.class>
</properties>
</profile>
<profile>
<id>product</id>
<properties>
<!-- 生產 -->
<packaging.type>war</packaging.type>
<main.class>xyz.jangle.MainWebApp</main.class>
</properties>
</profile>
</profiles>
6、使用變量定義打包類型
<groupId>xyz.jangle</groupId>
<artifactId>app</artifactId>
<packaging>${packaging.type}</packaging>
7、通過打包命令選擇具體環境
war包package :
package -Pproduct
jar包package:package :
package
或者
package -Pdev