1. 程式人生 > 程式設計 >Springboot基於maven打包分離lib及resource

Springboot基於maven打包分離lib及resource

之前在部署Spring Boot專案時,經常因為只修改了一小處程式碼、或者只更新了某個jar包,但是卻需要將整個專案重新打包、上傳、部署,整個包一般都會達到40-60M,每次都重複這個操作真的很耗費時間,因此就想是否能夠將依賴lib與專案程式碼分離出來,每次部署只需要釋出程式碼即可。

專案發版,為了應對更新多變的依賴jar包,實現增量或替換依賴jar包,越來越多的企業實現原始碼和依賴jar包和依賴配置分離,更好的應對複雜多變的現場和生產環境,使用maven打包配置如下:

<build>
<plugins>
 <!-- 指定啟動類,將依賴打成外部jar包 -->
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
   <archive>
    <!-- 生成的jar中,不要包含pom.xml和pom.properties這兩個檔案 -->
    <addMavenDescriptor>false</addMavenDescriptor>
    <manifest>
     <!-- 是否要把第三方jar加入到類構建路徑 -->
     <addClasspath>true</addClasspath>
     <!-- 外部依賴jar包的最終位置 -->
     <classpathPrefix>lib/</classpathPrefix>
     <!-- 專案啟動類 -->
     <mainClass>com.mozi.mq_monitor.MqMonitorApplication</mainClass>
    </manifest>
   </archive>
  </configuration>
 </plugin>
 <!--拷貝依賴到jar外面的lib目錄-->
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <executions>
   <execution>
    <id>copy-lib</id>
    <phase>package</phase>
    <goals>
     <goal>copy-dependencies</goal>
    </goals>
    <configuration>
     <outputDirectory>target/lib</outputDirectory>
     <excludeTransitive>false</excludeTransitive>
     <stripVersion>false</stripVersion>
     <includeScope>compile</includeScope>
    </configuration>
   </execution>
  </executions>
 </plugin>
 <!--指定配置檔案,將resources打成外部resource-->
 <plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
   <archive>
    <!-- 指定配置檔案目錄,這樣jar執行時會去找到同目錄下的resources資料夾下查詢 -->
    <manifestEntries>
     <Class-Path>resources/</Class-Path>
    </manifestEntries>
   </archive>
   <!-- 打包時忽略的檔案(也就是不打進jar包裡的檔案) -->
   <excludes>
    <exclude>*.yml</exclude>
    <exclude>*.xml</exclude>
    <exclude>mqConfig/*.xml</exclude>
   </excludes>
  </configuration>
 </plugin>
 <!-- 拷貝資原始檔 外面的resource目錄-->
 <plugin>
  <artifactId>maven-resources-plugin</artifactId>
  <executions>
   <execution>
    <id>copy-dependencies</id>
    <phase>package</phase>
    <goals>
     <goal>copy-resources</goal>
    </goals>
    <configuration>
     <!-- 資原始檔輸出目錄 -->
     <outputDirectory>${project.build.directory}/resources</outputDirectory>
     <resources>
      <resource>
       <directory>src/main/resources</directory>
      </resource>
     </resources>
    </configuration>
   </execution>
  </executions>
 </plugin>
</plugins>
</build>

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。