Maven 打包時類覆蓋問題


當要把依賴包打包進 jar 時,自己重寫了某些依賴包的類,這時會被依賴包的類覆蓋(相當於被還原了)

使用 maven-shade-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>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <!--自己項目的啟動類-->
                        <mainClass>org.apache.catalina.startup.Tomcat</mainClass>
                    </transformer>
                </transformers>
                <filters>
                    <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                            <exclude>META-INF/**</exclude>
                            <exclude>META-INF/*.*</exclude>
                            <exclude>META-INF/**/*.*</exclude>
                            <exclude>**/module-info.*</exclude>
                        </excludes>
                    </filter>
                    <filter>
                        <!--這里重寫了 tomcat-embed-core 包的 Tomcat 類-->
                        <!--就讓 tomcat-embed-core 包的 Tomcat 類在打包時排除,讓自己寫的不被覆蓋-->
                        <artifact>org.apache.tomcat.embed:tomcat-embed-core</artifact>
                        <excludes>
                            <exclude>org/apache/catalina/startup/Tomcat*.*</exclude>
                        </excludes>
                    </filter>
                </filters>
                <shadedArtifactAttached>true</shadedArtifactAttached>
                <!--生成 jar 包的名稱后綴-->
                <shadedClassifierName>jar-with-dependencies</shadedClassifierName>
                <!--是否不打包沒有用到的類,可能會有問題,可以自己測試精簡后是否正常運行-->
                <!--<minimizeJar>true</minimizeJar>-->
            </configuration>
        </execution>
    </executions>
</plugin>

 


https://www.jianshu.com/p/7a0e20b30401

https://maven.apache.org/plugins/maven-shade-plugin/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM