91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用springboot打包插件去除jar包瘦身

發布時間:2022-04-06 17:40:30 來源:億速云 閱讀:167 作者:iii 欄目:編程語言

這篇文章主要介紹“怎么使用springboot打包插件去除jar包瘦身”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用springboot打包插件去除jar包瘦身”文章能幫助大家解決問題。

1、pom文件配置

1.1 添加maven-dependency-plugin插件用于將引用的jar包拷貝到指定的路徑

便于后續tomcat啟動指定依賴包路徑

<!--拷貝依賴到jar外面的lib目錄-->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>copy</id>
            <phase>package</phase>
            <goals>
                <goal>copy-dependencies</goal>
            </goals>
            <configuration>                <!--指定的依賴路徑-->
                <outputDirectory>
                    ${project.build.directory}/lib
                </outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>

使用這個插件構建完之后的目錄結構多了一個lib目錄(即上述配置的outputDirectory指定的路徑),里面是依賴的jar包:

怎么使用springboot打包插件去除jar包瘦身

怎么使用springboot打包插件去除jar包瘦身

1.2 springboot項目使用spring-boot-maven-plugin打包插件

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>true</executable>
     <layout>ZIP</layout>
        <mainClass>
            com.iasp.BasicStarter
        </mainClass>
        <!--只包含自己-->
        <includes>
            <include>
                <groupId>${groupId}</groupId>
                <artifactId>${artifactId}</artifactId>
            </include>
         <!--或者-->
           <!--依賴jar不打進項目jar包中-->
             <!--<include>
                  <groupId>nothing</groupId>
                  <artifactId>nothing</artifactId>
             </include>-->
        </includes>
        <!--不包含哪些-->
        <!--<excludeGroupIds>-->
            <!--com.hundsun.jrescloud,-->
            <!--org.springframework.boot,-->
            <!--org.springframework-->
        <!--</excludeGroupIds>-->
    </configuration>

    <executions>
        <execution>
            <goals>
                <goal>repackage</goal>
            </goals>
        </execution>
    </executions>
</plugin>

配置上述打包之后就會排除相應的jar包,使得由插件打成的Flat jar包大小變小,便于上傳服務器發布,效果如下,BOOT-INF目錄下的lib目錄沒有了:

怎么使用springboot打包插件去除jar包瘦身

原先打成的jar包里的結構為

怎么使用springboot打包插件去除jar包瘦身

然后在啟動項目時指定jar包路徑-Dloader.path="../lib",這樣就可以達到瘦身效果了,其中依賴放在D:develop/shared/fjar目錄下,執行運行命令

java -Dloader.path="D:develop/shared/fjar" -jar mytest.jar

附注:另外一種啟動方案是可以不加-Dloader.path="D:develop/shared/fjar"來指定路徑,直接使用如下指令啟動

java -jar mytest.jar

使用上述啟動的話需要添加maven-jar-plugin插件,配置<classpathPrefix>屬性,另外在處理一些讀取可執行jar中的文件時,可以使用maven-jar-plugin插件替換spring-boot-maven-plugin進行打包操作

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <!--addClasspath表示需要加入到類構建路徑-->
                <addClasspath>true</addClasspath>
                <!--classpathPrefix指定生成的Manifest文件中Class-Path依賴lib前面都加上路徑,構建出lib/xx.jar-->
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>com.common.util.CommonUtilsApplication</mainClass>
            </manifest>
        </archive>
    </configuration>
</plugin>

上述插件效果就是在打成的包里META_INF目錄下的MANIFEST.MF文件里增加Class-path對應jar,這樣在后面應用剛啟動時就會根據Class-Path的只去加載需要的版本依賴(解決在共享目錄里存在多版本加載引用沖突問題),這個效果就等效加參數-classpath xxx(具體的jar)。

此時就是將需要的jar目錄lib放在和要運行的xxx.jar同級目錄即可,啟動時就可以不加-Dloader.path參數了,如果lib目錄和要運行的xxx.jar不在同級目錄的話,則需要使用-Dloader.path來啟動

怎么使用springboot打包插件去除jar包瘦身

如下:在同一級目錄啟動

怎么使用springboot打包插件去除jar包瘦身

不在同一級目錄啟動:

怎么使用springboot打包插件去除jar包瘦身

其中-Dloader.path可以指定多個目錄,這樣在存在多個微服務情況下可將一些公共用到的jar放在一個共享目錄中,每個微服務獨有的jar可以放在微服務私有的目錄下(解決jar版本沖突問題),示例如下:

怎么使用springboot打包插件去除jar包瘦身

注意:

1、使用-Dloader.path需要在打包的時候增加<layout>ZIP</layout>,不指定的話-Dloader.path不生效

對于多個微服務瘦身打包建議使用maven-jar-plugin打包,避免因為spring-boot-maven-plugin打包機制導致的一些應用啟動問題(已踩坑)

2、若存在不同版本依賴:

比如項目A依賴Y庫的1.0版本,項目B依賴Y庫的2.0版本,那么可能會出現版本依賴沖突(兩個版本不兼容的情況下),解決方案:

2.1、能做到版本一致就保持使用同一個版本,保證版本一致。可以使用maven的版本依賴管理進行處理,即在父pom文件使用<dependencyManagement>統一管理依賴版本

2.2、讓項目各自依賴所需的版本并打進war包中,把其他同版本的jar包放在同一個共享包下

測試發現依賴在查找時從上往下找,匹配到就用第一個,如下圖會使用comm-0.0.1.jar版本的

怎么使用springboot打包插件去除jar包瘦身

附注:

使用spring-boot-maven-plugin插件,會將依賴的jar包全部打包進去,這樣就可以直接運行生成的 JAR 包,簡化了我們開發操作。

使用spring-boot-maven-plugin插件如果不指定程序主運行入口類的話默認為Main-Class: org.springframework.boot.loader.JarLauncher

怎么使用springboot打包插件去除jar包瘦身

這個可以自定義執行主入口類,有以下幾種方式:

1.POM繼承spring-boot-starter-parent

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.9.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
<properties>
        <!-- The main class to start by executing java -jar -->
        <start-class>ccom.notes.JavaNotesApplication</start-class>
</properties>

2.POM不是繼承spring-boot-starter-parent時需指定

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <version>2.1.9.RELEASE</version>
  <configuration>
    <mainClass>com.notes.JavaNotesApplication</mainClass>
    <layout>ZIP</layout>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
</plugin>

3.POM不是繼承spring-boot-starter-paren,且使用maven-jar-plugin插件來指定執行的類

<plugin>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-jar-plugin</artifactId>
   <configuration>
      <archive>
         <manifest>
            <addClasspath>true</addClasspath>
            <useUniqueVersions>false</useUniqueVersions>
            <classpathPrefix>lib/</classpathPrefix>
            <mainClass>com.notes.JavaNotesApplication</mainClass>
         </manifest>
         <manifestEntries>
            <version>${project.version}</version>
         </manifestEntries>
      </archive>
   </configuration>
</plugin>

關于“怎么使用springboot打包插件去除jar包瘦身”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祥云县| 东丽区| 通河县| 腾冲县| 通渭县| 墨竹工卡县| 古浪县| 陆川县| 馆陶县| 宁阳县| 金昌市| 平昌县| 乌拉特中旗| 内江市| 布尔津县| 霍山县| 田东县| 东乡族自治县| 安福县| 濮阳市| 锦屏县| 儋州市| 华容县| 清新县| 吉水县| 桐庐县| 偏关县| 沽源县| 石泉县| 平安县| 韶山市| 德清县| 碌曲县| 井冈山市| 盘锦市| 尼勒克县| 浠水县| 交城县| 阳东县| 丰宁| 台安县|