一、背景
現在我們大部分的項目都是基於maven來進行構建的,比如現在主流的Spring boot項目,全程都是基於maven進行搭建,那麼我們在對maven項目開發完成之後,準備上線需要對項目進行打包的時候,有時候經常遇到主函數找不到?或者是開發環境的和測試環境的配置文件還在包裏面沒有去除。那麼我們這裏主要介紹Spring boot項目如何打包合理化的問題。
二、關於主函數找不到
打包完成之後你會發現主函數找不到,https://blog.csdn.net/miwanmeng/article/details/80401118,這是我前面寫的解決方案,這個解決方案是沒有問題,但是相對來說不夠方便,下面我們可以對pom.xml文件進行增加配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.0.0.RELEASE</version>
<configuration>
<mainClass>com.trs.DemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
這裏我們可以看到我們需要配置的是mainClass這個標籤,只要這個地址是對的,那麼打包的時候就會成功。
三、項目打包時過濾開發環境和測試環境的配置文件。
這裏我們還是需要在pom.xml下面進行打包配置,下面可以參考我的配置方案,具體項目需要具體分析,這裏沒有通用的方案,所以我下面的代碼是提供參考。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<excludes>
<exclude>application-dev.properties</exclude>
<exclude>application-test.properties</exclude>
</excludes>
</configuration>
</plugin>
需要注意的是這個配置也是放啊 build->plugins->標籤下面。exclude裏面是可以寫通配符的需要提醒,當然這是去掉的方案,也可以選擇配置只留下的方案,和這個配置相反。
四、擴展Spring boot特殊打包
關於Spring boot打包我們可以打包成jar包或者war包大家都知道了,這裏我想補充的是打包成jar包的時候,但是我代碼想給別的項目做個依賴包的時候該怎麼打包呢,這裏官方也有提供方案的,我這裏也給出一個示例:
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>lib</id>
<phase>package</phase>
<goals>
<goal>jar</goal>
</goals>
<configuration>
<classifier>lib</classifier>
<excludes>
<exclude>application*.*</exclude>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
</excludes>
</configuration>
</execution>
</executions>
</plugin>
exclude標籤內一樣是寫需要去掉的不需要打包的內容,配置這個只會,你打包的時候回出現兩個jar包。