maven-shaded(jar包冲突)

场景:

        项目中已经对接过一个第三方,加密用的国密,jar包版本是bcprov-jdk15on。过了段时间需要对接另外的第三方接口,也要求使用国密,但是jar包版本是bcprov-jdk16。国密jar各个版本间改动非常大,所以会出现bcprov-jdk15on与bcprov-jdk16会存在相同类但是实现完全不同的情况。针对这种情况,一种解决办法是对其中一个jar的全路径进行修改。避免两个jar包的全路径冲突。

解决办法:

        0.新建pom文件

<?xml version="1.0" encoding="UTF-8"?>
<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>shaded.org.bouncycastle</groupId>
    <artifactId>bcprov-jdk16</artifactId>
    <version>1.46-SNAPSHOT</version>
    <name>bcprov-jdk16</name>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-jdk16</artifactId>
            <version>1.46</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <!-- 指定项目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>
  1. 修改jar包的名称信息

    进入pom文件,修改如下代码,替换为自己想要的名称与版本

    <groupId>shaded.org.bouncycastle</groupId>
    <artifactId>bcprov-jdk16</artifactId>
    <version>1.46-SNAPSHOT</version>
    <name>bcprov-jdk16</name>
    
  2. 添加依赖

    进入pom文件,添加想要修改的jar包的依赖

    <dependency>
      <groupId>org.bouncycastle</groupId>
      <artifactId>bcprov-jdk16</artifactId>
      <version>1.46</version>
    </dependency>
    
  3. 修改想要替换的包路径以及改后的包路径

    pattern中是需要被替换的路径

    shadedPattern中是被替换后的路径。

    <relocation>
        <pattern>org.bouncycastle</pattern>
        <shadedPattern>shaded.org.bouncycastle</shadedPattern>
    </relocation>
    
  4. 打包

执行 mvn package名称打包。然后将这个jar传入私服,就可以使用了。
D:\BigData\Idea\JDK\bin\java.exe -Dmaven.multiModuleProjectDirectory=D:\BigData\Idea\Idea创建的文件\FlinkTutorial -Djansi.passthrough=true "-Dmaven.home=D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\plugins\maven\lib\maven3" "-Dclassworlds.conf=D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\plugins\maven\lib\maven3\bin\m2.conf" "-Dmaven.ext.class.path=D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\plugins\maven\lib\maven-event-listener.jar" "-javaagent:D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\lib\idea_rt.jar=54389:D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\plugins\maven\lib\maven3\boot\plexus-classworlds-2.8.0.jar;D:\BigData\Idea\idea软件信息\IntelliJ IDEA 2024.2.1\plugins\maven\lib\maven3\boot\plexus-classworlds.license" org.codehaus.classworlds.Launcher -Didea.version=2024.2.1 package [INFO] Scanning for projects... [INFO] [INFO] ---------------------< org.example:FlinkTutorial >---------------------- [INFO] Building FlinkTutorial 1.0-SNAPSHOT [INFO] from pom.xml [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- resources:3.3.1:resources (default-resources) @ FlinkTutorial --- [INFO] skip non existing resourceDirectory D:\BigData\Idea\Idea创建的文件\FlinkTutorial\src\main\resources [INFO] [INFO] --- compiler:3.13.0:compile (default-compile) @ FlinkTutorial --- [INFO] Nothing to compile - all classes are up to date. [INFO] [INFO] --- resources:3.3.1:testResources (default-testResources) @ FlinkTutorial --- [INFO] skip non existing resourceDirectory D:\BigData\Idea\Idea创建的文件\FlinkTutorial\src\test\resources [INFO] [INFO] --- compiler:3.13.0:testCompile (default-testCompile) @ FlinkTutorial --- [INFO] No sources to compile [INFO] [INFO] --- surefire:3.2.5:test (default-test) @ FlinkTutorial --- [INFO] No tests to run. [INFO] [INFO] --- jar:3.4.1:jar (default-jar) @ FlinkTutorial --- [WARNING] JAR will be empty - no content was marked for inclusion! [INFO] Building jar: D:\BigData\Idea\Idea创建的文件\FlinkTutorial\target\FlinkTutorial-1.0-SNAPSHOT.jar [INFO] [INFO] --- shade:3.2.4:shade (default) @ FlinkTutorial --- [INFO] Including org.apache.flink:flink-streaming-java:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-core:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-annotations:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-metrics-core:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-shaded-asm-9:jar:9.3-16.1 in the shaded jar. [INFO] Including org.apache.flink:flink-shaded-jackson:jar:2.13.4-16.1 in the shaded jar. [INFO] Including org.apache.commons:commons-lang3:jar:3.12.0 in the shaded jar. [INFO] Including org.apache.commons:commons-text:jar:1.10.0 in the shaded jar. [INFO] Including com.esotericsoftware.kryo:kryo:jar:2.24.0 in the shaded jar. [INFO] Including com.esotericsoftware.minlog:minlog:jar:1.2 in the shaded jar. [INFO] Including org.objenesis:objenesis:jar:2.1 in the shaded jar. [INFO] Including commons-collections:commons-collections:jar:3.2.2 in the shaded jar. [INFO] Including org.apache.commons:commons-compress:jar:1.21 in the shaded jar. [INFO] Including org.apache.flink:flink-file-sink-common:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-runtime:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-rpc-core:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-rpc-akka-loader:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-queryable-state-client-java:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-hadoop-fs:jar:1.17.0 in the shaded jar. [INFO] Including commons-io:commons-io:jar:2.11.0 in the shaded jar. [INFO] Including org.apache.flink:flink-shaded-netty:jar:4.1.82.Final-16.1 in the shaded jar. [INFO] Including org.apache.flink:flink-shaded-zookeeper-3:jar:3.7.1-16.1 in the shaded jar. [INFO] Including org.javassist:javassist:jar:3.24.0-GA in the shaded jar. [INFO] Including org.xerial.snappy:snappy-java:jar:1.1.8.3 in the shaded jar. [INFO] Including org.lz4:lz4-java:jar:1.8.0 in the shaded jar. [INFO] Including org.apache.flink:flink-shaded-force-shading:jar:16.1 in the shaded jar. [INFO] Including org.apache.flink:flink-java:jar:1.17.0 in the shaded jar. [INFO] Including com.twitter:chill-java:jar:0.7.6 in the shaded jar. [INFO] Including org.apache.flink:flink-shaded-guava:jar:30.1.1-jre-16.1 in the shaded jar. [INFO] Including org.apache.commons:commons-math3:jar:3.6.1 in the shaded jar. [INFO] Including org.apache.logging.log4j:log4j-slf4j-impl:jar:2.20.0 in the shaded jar. [INFO] Including org.apache.logging.log4j:log4j-api:jar:2.20.0 in the shaded jar. [INFO] Including org.apache.logging.log4j:log4j-core:jar:2.20.0 in the shaded jar. [INFO] Including org.apache.flink:flink-clients:jar:1.17.0 in the shaded jar. [INFO] Including org.apache.flink:flink-optimizer:jar:1.17.0 in the shaded jar. [INFO] Including commons-cli:commons-cli:jar:1.5.0 in the shaded jar. [INFO] Including ch.qos.logback:logback-classic:jar:1.2.11 in the shaded jar. [INFO] Including ch.qos.logback:logback-core:jar:1.2.11 in the shaded jar. [INFO] Excluding org.slf4j:slf4j-api:jar:1.7.36 from the shaded jar. [INFO] Excluding com.google.code.findbugs:jsr305:jar:1.3.9 from the shaded jar. [WARNING] FlinkTutorial-1.0-SNAPSHOT.jar, chill-java-0.7.6.jar, commons-cli-1.5.0.jar, commons-collections-3.2.2.jar, commons-compress-1.21.jar, commons-io-2.11.0.jar, commons-lang3-3.12.0.jar, commons-math3-3.6.1.jar, commons-text-1.10.0.jar, flink-annotations-1.17.0.jar, flink-clients-1.17.0.jar, flink-core-1.17.0.jar, flink-file-sink-common-1.17.0.jar, flink-hadoop-fs-1.17.0.jar, flink-java-1.17.0.jar, flink-metrics-core-1.17.0.jar, flink-optimizer-1.17.0.jar, flink-queryable-state-client-java-1.17.0.jar, flink-rpc-akka-loader-1.17.0.jar, flink-rpc-core-1.17.0.jar, flink-runtime-1.17.0.jar, flink-shaded-asm-9-9.3-16.1.jar, flink-shaded-force-shading-16.1.jar, flink-shaded-guava-30.1.1-jre-16.1.jar, flink-shaded-jackson-2.13.4-16.1.jar, flink-shaded-netty-4.1.82.Final-16.1.jar, flink-shaded-zookeeper-3-3.7.1-16.1.jar, flink-streaming-java-1.17.0.jar, javassist-3.24.0-GA.jar, kryo-2.24.0.jar, log4j-api-2.20.0.jar, log4j-core-2.20.0.jar, log4j-slf4j-impl-2.20.0.jar, logback-classic-1.2.11.jar, logback-core-1.2.11.jar, lz4-java-1.8.0.jar, minlog-1.2.jar, objenesis-2.1.jar, snappy-java-1.1.8.3.jar define 1 overlapping resource: [WARNING] - META-INF/MANIFEST.MF [WARNING] flink-annotations-1.17.0.jar, flink-clients-1.17.0.jar, flink-core-1.17.0.jar, flink-file-sink-common-1.17.0.jar, flink-hadoop-fs-1.17.0.jar, flink-java-1.17.0.jar, flink-metrics-core-1.17.0.jar, flink-optimizer-1.17.0.jar, flink-queryable-state-client-java-1.17.0.jar, flink-rpc-akka-loader-1.17.0.jar, flink-rpc-core-1.17.0.jar, flink-runtime-1.17.0.jar, flink-shaded-asm-9-9.3-16.1.jar, flink-shaded-force-shading-16.1.jar, flink-shaded-guava-30.1.1-jre-16.1.jar, flink-shaded-jackson-2.13.4-16.1.jar, flink-shaded-netty-4.1.82.Final-16.1.jar, flink-shaded-zookeeper-3-3.7.1-16.1.jar, flink-streaming-java-1.17.0.jar, log4j-api-2.20.0.jar, log4j-core-2.20.0.jar, log4j-slf4j-impl-2.20.0.jar, objenesis-2.1.jar define 2 overlapping resources: [WARNING] - META-INF/LICENSE [WARNING] - META-INF/NOTICE [WARNING] flink-annotations-1.17.0.jar, flink-clients-1.17.0.jar, flink-core-1.17.0.jar, flink-file-sink-common-1.17.0.jar, flink-hadoop-fs-1.17.0.jar, flink-java-1.17.0.jar, flink-metrics-core-1.17.0.jar, flink-optimizer-1.17.0.jar, flink-queryable-state-client-java-1.17.0.jar, flink-rpc-akka-loader-1.17.0.jar, flink-rpc-core-1.17.0.jar, flink-runtime-1.17.0.jar, flink-shaded-asm-9-9.3-16.1.jar, flink-shaded-force-shading-16.1.jar, flink-shaded-guava-30.1.1-jre-16.1.jar, flink-shaded-jackson-2.13.4-16.1.jar, flink-shaded-netty-4.1.82.Final-16.1.jar, flink-shaded-zookeeper-3-3.7.1-16.1.jar, flink-streaming-java-1.17.0.jar, log4j-api-2.20.0.jar, log4j-core-2.20.0.jar, log4j-slf4j-impl-2.20.0.jar define 1 overlapping resource: [WARNING] - META-INF/DEPENDENCIES [WARNING] flink-shaded-jackson-2.13.4-16.1.jar, log4j-api-2.20.0.jar define 1 overlapping classes: [WARNING] - META-INF.versions.9.module-info [WARNING] commons-cli-1.5.0.jar, commons-collections-3.2.2.jar, commons-compress-1.21.jar, commons-io-2.11.0.jar, commons-lang3-3.12.0.jar, commons-math3-3.6.1.jar, commons-text-1.10.0.jar define 2 overlapping resources: [WARNING] - META-INF/LICENSE.txt [WARNING] - META-INF/NOTICE.txt [WARNING] flink-shaded-netty-4.1.82.Final-16.1.jar, flink-shaded-zookeeper-3-3.7.1-16.1.jar define 6 overlapping resources: [WARNING] - META-INF/io.netty.versions.properties [WARNING] - META-INF/native-image/io.netty/buffer/native-image.properties [WARNING] - META-INF/native-image/io.netty/common/native-image.properties [WARNING] - META-INF/native-image/io.netty/handler/native-image.properties [WARNING] - META-INF/native-image/io.netty/transport/native-image.properties [WARNING] - META-INF/native-image/io.netty/transport/reflection-config.json [WARNING] log4j-slf4j-impl-2.20.0.jar, logback-classic-1.2.11.jar define 3 overlapping classes: [WARNING] - org.slf4j.impl.StaticLoggerBinder [WARNING] - org.slf4j.impl.StaticMDCBinder [WARNING] - org.slf4j.impl.StaticMarkerBinder [WARNING] maven-shade-plugin has detected that some class files are [WARNING] present in two or more JARs. When this happens, only one [WARNING] single version of the class is copied to the uber jar. [WARNING] Usually this is not harmful and you can skip these warnings, [WARNING] otherwise try to manually exclude artifacts based on [WARNING] mvn dependency:tree -Ddetail=true and the above output. [WARNING] See http://maven.apache.org/plugins/maven-shade-plugin/ [INFO] Replacing original artifact with shaded artifact. [INFO] Replacing D:\BigData\Idea\Idea创建的文件\FlinkTutorial\target\FlinkTutorial-1.0-SNAPSHOT.jar with D:\BigData\Idea\Idea创建的文件\FlinkTutorial\target\FlinkTutorial-1.0-SNAPSHOT-shaded.jar [INFO] Dependency-reduced POM written at: D:\BigData\Idea\Idea创建的文件\FlinkTutorial\dependency-reduced-pom.xml [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 5.862 s [INFO] Finished at: 2025-09-16T23:49:21+08:00 [INFO] ------------------------------------------------------------------------ 进程已结束,退出代码为 0 我这里的报错看一下
最新发布
09-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值