實例項目共三個模塊:
m1
m2
package
其中package依賴m1和m2,將m1和m2編譯生成的jar包一起打成一個war包。
springboot項目打成war包部署到tomcat時需要改變啟動方式,否則運行tomcat時war包只會解壓,但是加載不了
package的Application.java文件內容:

1 import org.springframework.boot.SpringApplication; 2 import org.springframework.boot.autoconfigure.SpringBootApplication; 3 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; 4 import org.springframework.boot.builder.SpringApplicationBuilder; 5 6 7 @SpringBootApplication 8 public class Application extends SpringBootServletInitializer { 9 10 public static void main(String[] args) { 11 12 SpringApplication.run(Application.class, args); 13 } 14 15 @Override 16 protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 17 return builder.sources(Application.class); 18 } 19 20 }
package的pom.xml文件內容:

1 <?xml version="1.0"?> 2 <project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>com.trx.spb</groupId> 7 <artifactId>fnc</artifactId> 8 <version>0.0.1</version> 9 </parent> 10 <artifactId>package</artifactId> 11 <name>package</name> 12 <url>http://maven.apache.org</url> 13 <packaging>war</packaging> 14 <properties> 15 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 16 </properties> 17 <dependencies> 18 <dependency> 19 <groupId>org.springframework.boot</groupId> 20 <artifactId>spring-boot-starter-web</artifactId> 21 <!-- 去除tomcat插件引用 --> 22 <exclusions> 23 <exclusion> 24 <groupId>org.springframework.boot</groupId> 25 <artifactId>spring-boot-starter-tomcat</artifactId> 26 </exclusion> 27 </exclusions> 28 </dependency> 29 <!-- 設置tomcatjar包的打包域,使war包運行時不與weblogic沖突 --> 30 <dependency> 31 <groupId>org.springframework.boot</groupId> 32 <artifactId>spring-boot-starter-tomcat</artifactId> 33 <scope>provided</scope> 34 </dependency> 35 <dependency> 36 <groupId>com.trx.fnc</groupId> 37 <artifactId>m1</artifactId> 38 <version>0.0.1</version> 39 </dependency> 40 <dependency> 41 <groupId>com.trx.fnc</groupId> 42 <artifactId>m2</artifactId> 43 <version>0.0.1</version> 44 </dependency> 45 <!-- lombok 實體類get、set等方法自動生成器 --> 46 <dependency> 47 <groupId>org.projectlombok</groupId> 48 <artifactId>lombok</artifactId> 49 <scope>provided</scope> 50 </dependency> 51 </dependencies> 52 53 <build> 54 <plugins> 55 <plugin> 56 <artifactId>maven-war-plugin</artifactId> 57 <version>2.6</version> 58 <configuration> 59 <!--如果想在沒有web.xml文件的情況下構建WAR,請設置為false。--> 60 <failOnMissingWebXml>false</failOnMissingWebXml> 61 </configuration> 62 </plugin> 63 </plugins> 64 </build> 65 </project>
package的pom.xml有幾項特殊點:
1.去除springboot 內嵌的tomcat模塊
2.需要使用 maven-war-plugin插件打包,且將failOnMissingWebXml配置項設置為false,要不然提示項目無web.xml文件的錯誤。
注:
1、使用maven-war-plugin3.0.0,解決了web.xml不存在無法構建war的問題
2、繼續使用maven-war-plugin2.6,添加設置failOnMissingWebXml=false
package生成的war包(假設文件名為package.war)部署到tomcat (版本:8.5)后,訪問地址http://localhost:8080/package/@RequestMapping路徑。
package項目中application.properties文件中的server.port、server.context-path等配置不再起作用。
鏈接:https://pan.baidu.com/s/1IaPpRD-0Wjil9PhQhk-wJQ
提取碼:00za