SpringBoot打包分離jar部署

首先提出一個問題,咱們爲何要把jar包分離出來?java

緣由很簡單咱們用spring-boot-maven-plugin插件打包後的jar文件一般生成的jar比較大,少則幾十M,若是上傳雲服務器外網傳輸會比較慢,爲啥打包後文件會很大呢,這是由於裏面包含了咱們項目依賴的衆多jar,那麼咱們就能夠大膽的想能不能把jar分離出來,由於項目在發佈的時候每每修改的是配置文件和java文件,對於依賴jar不多修改,因此就冒出一個想法,每次只發布變動的class和配置文件部分,能不能把jar剝離出來,開心的是maven確實提供了這種方式打包。使用maven-jar-plugin插件來打包便可剝離出jar。spring

問題拋出了,那麼如何解決嗎?修改pom.xml文件,把原來的spring-boot-maven-plugin打包插件換成maven-jar-pluginapache

<build>
  <plugins>
	<plugin>
	   <groupId>org.apache.maven.plugins</groupId>
	   <artifactId>maven-jar-plugin</artifactId>
	   <configuration>
		 <archive>
		   <manifest>
		     <addClasspath>true</addClasspath>
		     <classpathPrefix>lib/</classpathPrefix>
             <!--此處修改成你的應用入口類全路徑-->
		     <mainClass>com.jetsen.edu.StatisticsApplication</mainClass>
	       </manifest>
		 </archive>
	   </configuration>
	</plugin>
	<plugin>
      <!--這個插件就是把依賴的jar包複製出來放到編譯後的target/lib目錄,而且在打包時候排除內部依賴-->
	  <groupId>org.apache.maven.plugins</groupId>
	  <artifactId>maven-dependency-plugin</artifactId>
	  <executions>
	    <execution>
		   <id>copy-dependencies</id>
		   <phase>prepare-package</phase>
		   <goals>
			  <goal>copy-dependencies</goal>
		   </goals>
		   <configuration>
			 <outputDirectory>${project.build.directory}/lib</outputDirectory>
			 <overWriteReleases>false</overWriteReleases>
			 <overWriteSnapshots>false</overWriteSnapshots>
			 <overWriteIfNewer>true</overWriteIfNewer>
		   </configuration>
	    </execution>
	  </executions>
	</plugin>
  </plugins>
</build>

接下來在項目根目錄執行打包命令:mvn clean package -Dmaven.test.skip=true服務器

打包結束後我在target目錄會發現有一個lib目錄裏面全是咱們項目依賴的jar文件,然咱們在發佈時候把lib目錄和打包好的jar文件一同上傳到雲服務器便可,之後若是項目依賴沒有變化只須要上傳xxxx.jar文件到雲服務器, 執行 java -jar xxxx.jar & 命令便可,若是若依賴發生變化就須要替換lib目錄 這種方式打包完的jar文件每每只有幾百kb的大小,上傳也是很是快。maven

相關文章
相關標籤/搜索