Maven 阴影插件无法将 Spring Boot 版本从 2.3.3 更新到 2.4.0

Dra*_*ban 3 java maven maven-shade-plugin spring-boot

我刚刚将项目中的 Spring Boot 版本从 2.3.3 更新到 2.4.0。

对于我项目中的模块,我使用maven-shade-plugin简单的阴影目标,无需配置。当我使用 Spring Boot 2.3.3 时,一切都很顺利。2.4.0 的更新似乎要求我提供一个我无法加载的配置。

我从这篇文章中完成了所需的配置,但这对我没有帮助。

这是我现在所拥有的。

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <dependencies>
        <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>2.4.0</version>
    </dependency>
    </dependencies>
    <executions>
        <!-- Run shade goal on package phase -->
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer
                            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer
                            implementation="org.springframework.boot.maven.PropertiesMergingResourceTransformer">
                        <resource>META-INF/spring.factories</resource>
                    </transformer>
                    <transformer
                            implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                    <transformer
                            implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

我没有主类,因为这个模块的行为就像客户端(招摇生成的东西)。

我用maven构建的时候报错如下:

Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.2.1:shade (default) on project zenzefi-client: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.2.1:shade for parameter transformers: Cannot load implementation hint 'org.springframework.boot.maven.PropertiesMergingResourceTransformer'
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

Parent 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>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.4.0</version>
            <!-- updated 08.2020 -->
        </parent>
    
        <groupId>com.proj.myproject</groupId>
        <artifactId>common-parent</artifactId>
        <packaging>pom</packaging>
        <version>1.89.0.0-SNAPSHOT</version>
        <description>Parent POM</description>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    
            <!-- Dependencies versions -->
            <jacoco.version>0.8.5</jacoco.version>
            <commons-cli.version>1.4</commons-cli.version>
            <commons-io.version>2.6</commons-io.version>
            <commons-lang3.version>3.9</commons-lang3.version>
            <bouncycastle.version>1.66</bouncycastle.version>
            <flyway-core.version>5.2.4</flyway-core.version>
            <secunet.version>1.4.0</secunet.version>
            <jaxb.version>2.3.1</jaxb.version>
            <javax.annotation.version>1.3.2</javax.annotation.version>
            <org.hibernate.version>5.3.15.Final</org.hibernate.version>
            <commons-lang.version>2.6</commons-lang.version>
            <forms.version>1.0.7</forms.version>
    
            <!-- Swagger -->
            <springfox-swagger.version>2.9.2</springfox-swagger.version>
            <swagger-core.version>1.5.24</swagger-core.version>
    
            <jodatime.version>2.10.5</jodatime.version>
            <okhttp.version>2.7.5</okhttp.version>
            <gson.version>2.8.6</gson.version>
    
            <!-- Plugins versions -->
            <maven-assembly-plugin.version>3.2.0</maven-assembly-plugin.version>
            <maven-eclipse-plugin.version>2.10</maven-eclipse-plugin.version>
            <maven-jarsigner-plugin.version>3.0.0</maven-jarsigner-plugin.version>
            <maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
            <maven-surefire-plugin.version>2.22.2</maven-surefire-plugin.version>
            <maven-dependency-plugin.version>3.1.1</maven-dependency-plugin.version>
            <licence-maven-plugin.version>2.0.0</licence-maven-plugin.version>
            <swagger-codegen-maven-plugin.version>2.2.3</swagger-codegen-maven-plugin.version>
            <jacoco-maven-plugin.version>0.8.5</jacoco-maven-plugin.version>
            <janino-version>3.1.0</janino-version>
            <launch4j-maven-plugin.version>1.7.25</launch4j-maven-plugin.version>
            <maven-shade-plugin.version>3.2.1</maven-shade-plugin.version>
            <gmaven-plugin.version>1.0</gmaven-plugin.version>
            <soapui-maven-plugin.version>5.2.1</soapui-maven-plugin.version>
            <process-exec-maven-plugin>0.9</process-exec-maven-plugin>
    
            <timestamp>${maven.build.timestamp}</timestamp>
            <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
            <sonar.jacoco.reportPath>${project.basedir}/../target/</sonar.jacoco.reportPath>
    
            <!-- Test dependencies -->
            <wiremock-standalone.version>2.18.0</wiremock-standalone.version>
            <threadweaver.version>0.1</threadweaver.version>
            <junit.version>4.13.1</junit.version>
            <junit.vintage.version>5.7.0</junit.vintage.version>
            <mockito-all.version>1.9.5</mockito-all.version>
            <zip4j.version>2.6.4</zip4j.version>
    
        </properties>
    
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>javax.annotation</groupId>
                    <artifactId>javax.annotation-api</artifactId>
                    <version>${javax.annotation.version}</version>
                </dependency>
                <dependency>
                    <groupId>io.springfox</groupId>
                    <artifactId>springfox-swagger2</artifactId>
                    <version>${springfox-swagger.version}</version>
                </dependency>
                <dependency>
                    <groupId>io.springfox</groupId>
                    <artifactId>springfox-swagger-ui</artifactId>
                    <version>${springfox-swagger.version}</version>
                </dependency>
                <dependency>
                    <groupId>io.swagger</groupId>
                    <artifactId>swagger-annotations</artifactId>
                    <version>${swagger-core.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.squareup.okhttp</groupId>
                    <artifactId>okhttp</artifactId>
                    <version>${okhttp.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.squareup.okhttp</groupId>
                    <artifactId>logging-interceptor</artifactId>
                    <version>${okhttp.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.google.code.gson</groupId>
                    <artifactId>gson</artifactId>
                    <version>${gson.version}</version>
                </dependency>
                <dependency>
                    <groupId>joda-time</groupId>
                    <artifactId>joda-time</artifactId>
                    <version>${jodatime.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>bcprov-jdk15on</artifactId>
                    <version>${bouncycastle.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>bcpkix-jdk15on</artifactId>
                    <version>${bouncycastle.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>bctls-jdk15on</artifactId>
                    <version>${bouncycastle.version}</version>
                </dependency>
                <dependency>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                    <version>${commons-io.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.commons</groupId>
                    <artifactId>commons-lang3</artifactId>
                    <version>${commons-lang3.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.secunet</groupId>
                    <artifactId>ed25519ph-common</artifactId>
                    <version>${secunet.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.secunet</groupId>
                    <artifactId>ed25519phlib</artifactId>
                    <version>${secunet.version}</version>
                </dependency>
                <dependency>
                    <groupId>com.secunet</groupId>
                    <artifactId>ed25519ph-pkcs12support</artifactId>
                    <version>${secunet.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-core</artifactId>
                    <version>${flyway-core.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <version>${maven-dependency-plugin.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.codehaus.janino</groupId>
                    <artifactId>janino</artifactId>
                    <version>${janino.version}</version>
                </dependency>
                <!-- OAuth -->
                <dependency>
                    <groupId>org.springframework.security.oauth.boot</groupId>
                    <artifactId>spring-security-oauth2-autoconfigure</artifactId>
                    <version>2.1.0.RELEASE</version>
                </dependency>
                <dependency>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                    <version>${junit.vintage.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>${junit.version}</version>
                    <scope>test</scope>
                </dependency>
                <!-- Test -->
                <dependency>
                    <groupId>com.github.tomakehurst</groupId>
                    <artifactId>wiremock-standalone</artifactId>
                    <version>${wiremock-standalone.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-all</artifactId>
                    <version>${mockito-all.version}</version>
                    <scope>test</scope>
                </dependency>
                <!-- Needed for Java 10 -->
                <dependency>
                    <groupId>javax.xml.bind</groupId>
                    <artifactId>jaxb-api</artifactId>
                    <version>${jaxb.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jaxb</groupId>
                    <artifactId>jaxb-runtime</artifactId>
                    <version>${jaxb.version}</version>
                </dependency>
                <dependency>
                    <groupId>javax.annotation</groupId>
                    <artifactId>javax.annotation-api</artifactId>
                    <version>${javax.annotation.version}</version>
                </dependency>
                <!-- Needed for Java 11 -->
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-core</artifactId>
                    <version>${org.hibernate.version}</version>
                </dependency>
                <dependency>
                    <groupId>org.hibernate</groupId>
                    <artifactId>hibernate-entitymanager</artifactId>
                    <version>${org.hibernate.version}</version>
                </dependency>
                <!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j -->
                <dependency>
                    <groupId>net.lingala.zip4j</groupId>
                    <artifactId>zip4j</artifactId>
                    <version>${zip4j.version}</version>
                </dependency>
    
                <dependency>
                    <groupId>com.googlecode.thread-weaver</groupId>
                    <artifactId>threadweaver</artifactId>
                    <version>${threadweaver.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
    
        </dependencyManagement>
    
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-assembly-plugin</artifactId>
                        <version>${maven-assembly-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-eclipse-plugin</artifactId>
                        <version>${maven-eclipse-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-jarsigner-plugin</artifactId>
                        <version>${maven-jarsigner-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-resources-plugin</artifactId>
                        <version>${maven-resources-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-shade-plugin</artifactId>
                        <version>${maven-shade-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>${maven-surefire-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>license-maven-plugin</artifactId>
                        <version>${licence-maven-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>io.swagger</groupId>
                        <artifactId>swagger-codegen-maven-plugin</artifactId>
                        <version>${swagger-codegen-maven-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>com.akathist.maven.plugins.launch4j</groupId>
                        <artifactId>launch4j-maven-plugin</artifactId>
                        <version>${launch4j-maven-plugin.version}</version>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <configuration>
                            <!

小智 15

我对 spring-boot 版本 2.4.5 和 maven-shade-plugin 3.2.0 遇到了同样的问题,将 maven-shade-plugin 升级到 3.2.4 解决了我的问题。