最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用maven-shade-plugin插件解決不兼容的依賴沖突的情況

 更新時(shí)間:2026年05月17日 10:39:52   作者:菜鳥呼叫總部  
本文介紹了在Maven工程中遇到底層依賴包版本沖突問題,使用maven-shade-plugin插件解決沖突的方法,并詳細(xì)描述了步驟及注意事項(xiàng)

使用場景的介紹

1.在maven工程中,我們常常遇到底層依賴包的版本沖突問題。如果高版本對低版本兼容,那么我們可以使用maven的exclusions排除掉低版本。但如果版本互不兼容,甚至是不同jar有相同類名的沖突,就比較棘手了。

2.例如我這個(gè)項(xiàng)目的epoint-sso-authenticator 依賴了一個(gè)低版本的bcprov-jdk15on,hutool的依賴了一個(gè)高版本的,里面有包名類名都重復(fù)的類,況且高版本不兼容低版本,二者都保留,必然會(huì)有一個(gè)功能報(bào)錯(cuò),排除其中任何一個(gè),對應(yīng)的功能也會(huì)報(bào)錯(cuò)。

3.此時(shí)可以使用maven-shade-plugin,重新打一個(gè)新的jar包,將bcprov-jdk15on包名重置,并自動(dòng)更改Hutool包中對bcprov-jdk15on包的import路徑。

整合步驟

1、新建一個(gè)空的maven工程shaded-hutool,pom依賴如下;

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.example</groupId>
  <artifactId>shaded-hutool</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>
  <name>shaded-hutool</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
      <groupId>cn.hutool</groupId>
      <artifactId>hutool-all</artifactId>
      <version>5.5.7</version>
    </dependency>
    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk15on</artifactId>
      <version>1.67-e1</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <!-- 指定項(xiàng)目java編譯版本 -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.4</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <createDependencyReducedPom>true</createDependencyReducedPom>
              <relocations>
                <relocation>
                  <pattern>org.bouncycastle</pattern>
                  <shadedPattern>shaded.org.bouncycastle</shadedPattern>
                </relocation>
              </relocations>
              <filters>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.RSA</exclude>
                  </excludes>
                </filter>
              </filters>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

這里就是把hutool里關(guān)于引入的org.bouncycastle的類,統(tǒng)一修改成了shaded.org.bouncycastle,這樣即使類名重復(fù),包名也不會(huì)重復(fù),不會(huì)產(chǎn)生沖突了。

2、新建的工程打包,解壓后,發(fā)現(xiàn)把bcprov-jdk15on也給編譯進(jìn)去了,并且自動(dòng)加了一個(gè)層級(jí)shaded。

3、反編譯打包的代碼,發(fā)現(xiàn)相關(guān)的類的導(dǎo)入已經(jīng)變成自定義的了;

4、把重新打包的依賴發(fā)布到私.服,或者項(xiàng)目直接引入,排除項(xiàng)目其他的hutool依賴,這里就會(huì)用我們自己編譯后的hutool了,只不過里面和項(xiàng)目沖突的類,更改了引用的包路徑;

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot整合Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼加減乘除功能

    SpringBoot整合Kaptcha實(shí)現(xiàn)圖片驗(yàn)證碼加減乘除功能

    在開發(fā)Web應(yīng)用時(shí),驗(yàn)證碼是一個(gè)常見的功能,它可以幫助我們防止機(jī)器人的惡意操作,今天我們將學(xué)習(xí)如何使用Kaptcha生成圖片驗(yàn)證碼,并自定義驗(yàn)證碼內(nèi)容為100以內(nèi)的加減乘除運(yùn)算,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • intelliJ idea 2023 配置Tomcat 8圖文教程

    intelliJ idea 2023 配置Tomcat 8圖文教程

    這篇文章主要介紹了intelliJ idea 2023 配置Tomcat 8教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Activiti7整合Springboot使用記錄

    Activiti7整合Springboot使用記錄

    這篇文章主要介紹了Activiti7+Springboot使用整合記錄,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Java GUI插入圖片不顯示問題解決方法

    Java GUI插入圖片不顯示問題解決方法

    大家好,本篇文章主要講的是Java GUI插入圖片不顯示問題解決方法,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • java實(shí)現(xiàn)讀取jar包中配置文件的幾種方式

    java實(shí)現(xiàn)讀取jar包中配置文件的幾種方式

    本文主要介紹了java實(shí)現(xiàn)讀取jar包中配置文件的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Feign如何使用protobuf的類作為參數(shù)調(diào)用

    Feign如何使用protobuf的類作為參數(shù)調(diào)用

    這篇文章主要介紹了Feign如何使用protobuf的類作為參數(shù)調(diào)用,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Spring Cloud調(diào)用Ribbon的步驟

    Spring Cloud調(diào)用Ribbon的步驟

    Ribbon是Netflix發(fā)布的開源項(xiàng)目,主要功能是提供客戶端的軟件負(fù)載均衡算法和服務(wù)調(diào)用。本文將講述Spring Cloud調(diào)用Ribbon的方法
    2021-05-05
  • Java利用遺傳算法求解最短路徑問題

    Java利用遺傳算法求解最短路徑問題

    遺傳算法(Genetic Algorithm,GA)最早是由美國的John holland于20世紀(jì)70年代提出,該算法是根據(jù)大自然中生物體進(jìn)化規(guī)律而設(shè)計(jì)提出的。本文將利用遺傳算法求解最短路徑問題,需要的可以參考一下
    2022-06-06
  • SpringBoot實(shí)現(xiàn)HTTP服務(wù)監(jiān)聽的代碼示例

    SpringBoot實(shí)現(xiàn)HTTP服務(wù)監(jiān)聽的代碼示例

    前后端分離項(xiàng)目中,在調(diào)用接口調(diào)試時(shí)候,我們可以通過cpolar內(nèi)網(wǎng)穿透將本地服務(wù)端接口模擬公共網(wǎng)絡(luò)環(huán)境遠(yuǎn)程調(diào)用調(diào)試,本次教程我們以Java服務(wù)端接口為例,需要的朋友可以參考下
    2023-05-05
  • SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    SpringBoot前后端分離實(shí)現(xiàn)驗(yàn)證碼操作

    驗(yàn)證碼的功能是防止非法用戶惡意去訪問登錄接口而設(shè)置的一個(gè)功能,今天我們就來看看在前后端分離的項(xiàng)目中,SpringBoot是如何提供服務(wù)的
    2022-05-05

最新評論

宜丰县| 潼关县| 玉环县| 永川市| 新疆| 德庆县| 县级市| 美姑县| 陆河县| 漳平市| 永兴县| 淮北市| 佳木斯市| 青浦区| 河西区| 宁南县| 永嘉县| 珲春市| 绿春县| 巴中市| 鱼台县| 龙岩市| 岐山县| 梧州市| 怀来县| 梓潼县| 白山市| 天等县| 循化| 包头市| 汉寿县| 托克逊县| 玛多县| 永靖县| 青冈县| 县级市| 治多县| 松桃| 邹平县| 阳春市| 桂东县|