spring boot打包會有.war.original檔案的原因 (筆記)
阿新 • • 發佈:2018-12-11
今天使用spring boot 2.1.1.RELEASE版本搭建專案,雖然可以直接打包成可執行的jar包,但是由於公司準備採用docker容器來管理專案,所以需要把jar包變成war包,並且war包內也不需要內嵌tomcat。
經歷:按照網上說的在pom中新增程式碼(更改package型別是必須的<packaging>war</packaging>
):
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
發現打包出來的war包體積仍然很大,而且target下面會出現一個war包和一個.war.original結尾的檔案,war檔案中仍然包含tomcat的jar包。
最後觀察mvn打包輸出的內容如下:
......省略...... [INFO] --- maven-war-plugin:3.2.2:war (default-war) @ sandbox-service --- [INFO] Packaging webapp [INFO] Assembling webapp [sandbox-service] in [/...省略專案絕對路徑.../target/sandbox-service-0.0.1-SNAPSHOT] [INFO] Processing war project [INFO] Webapp assembled in [139 msecs] [INFO] Building war: /...省略專案絕對路徑.../target/sandbox-service-0.0.1-SNAPSHOT.war [INFO] [INFO] --- spring-boot-maven-plugin:2.1.1.RELEASE:repackage (repackage) @ sandbox-service --- [INFO] Replacing main artifact with repackaged archive [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.515 s ......省略......
原來maven已經打包好了,然後spring-boot-maven-plugin又重新做了打包的動作,應該是打包成了可以通過-jar執行的包,並且把原來maven打包好的war包重新命名成了.war.original
當我把pom檔案中的程式碼註釋之後就正常了
<!-- 註釋spring-boot-maven-plugin原因:因為這個外掛會重新打包(repackage),打包成spring-boot可通過-jar形式執行的jar或war包,並且把原來maven打包重名稱成.war.original結尾 --> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> -->
如果想在打包的時候定義war名稱,還可以新增下面的外掛:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<warName>war包的名稱</warName>
</configuration>
</plugin>