Не удалось проанализировать конфигурацию mojo org.apache.maven.plugins:maven-shade-plugin: 3.0.0: тень для преобразователя параметров

#maven #aws-lambda #maven-plugin #maven-shade-plugin

#maven #aws-lambda #maven-plugin #maven-shade-plugin

Вопрос:

Я пытаюсь настроить log4j2 для моей функции aws lambda, используя среду выполнения java8. Обработчик Aws lambda предоставляет context-Lambdalogger, но я хочу использовать стандартную конфигурацию log4j, чтобы ее можно было объявлять в каждом классе и регистрировать по мере необходимости, не передавая context-Lambdalogger каждому методу и так далее. В соответствии с документацией aws я попытался использовать приведенные ниже зависимости и плагин, как указано ниже. Но я получаю следующую ошибку. Любые подсказки или идеи могут помочь.

 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:3.0.0:shade (default) on project lcc: Unable to parse configuration of mojo org.apache.maven.plugins:maven-shade-plugin:3.0.0:shade for parameter transformer: Cannot create instance of interface org.apache.maven.plugins.shade.resource.ResourceTransformer: org.apache.maven.plugins.shade.resource.ResourceTransformer.<init>() -> [Help 1]



< dependency><br/>
      < groupId>com.amazonaws< /groupId><br/>
      < artifactId>aws-lambda-java-log4j2< /artifactId><br/>
      < version>1.0.0< /version><br/>
    < /dependency><br/>
    < dependency><br/>
      < groupId>org.apache.logging.log4j< /groupId><br/>
      < artifactId>log4j-core< /artifactId>
      < version>2.8.2< /version><br/>
    < /dependency><br/>
    < dependency><br/>
      < groupId>org.apache.logging.log4j< /groupId><br/>
      < artifactId>log4j-api< /artifactId><br/>
      < version>2.8.2< /version><br/>
< /dependency><br/>


< plugin><br/>
        < group Id>org.apache.maven.plugins< /group Id><br/>
        < artifactId>maven-shade-plugin< /artifactId><br/>
        < version>3.0.0< /version><br/>
        < executions><br/>
          < execution><br/>
            < phase>package< /phase><br/>
            < goals><br/>
              < goal>shade< /goal><br/>
            < /goals><br/>
            < configuration><br/>
              < transformers><br/>
                < transformer><br/>
                        implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer"><br/>
                < /transformer><br/>
              < /transformers><br/>
            < /configuration><br/>
          < /execution><br/>
        < /executions><br/>
        < dependencies><br/>
          < dependency><br/>
            < group Id>com.github.edwgiz< /group Id><br/>
            < artifact Id>maven-shade-plugin.log4j2-cachefile-transformer< /artifactId><br/>
            < version>2.8.1< /version><br/>
          < /dependency><br/>
        < /dependencies><br/>
< /plugin>
 

Ответ №1:

Эта проблема устраняется при использовании последней версии плагина

           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.4</version>
                <configuration>
                    <createDependencyReducedPom>false</createDependencyReducedPom>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
 

Ответ №2:

Я наконец-то понял это! Похоже, при использовании transformer возникают некоторые проблемы с совместимостью с плагином версии 3.0.0. Я понизил рейтинг плагина до версии 2.3, и теперь он работает нормально.

Плагин shade теперь может создавать uber jar со всеми включенными в него компонентами журнала.

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <configuration>
        <createDependencyReducedPom>false</createDependencyReducedPom>
        <transformers>
            <transformer
                    implementation="com.github.edwgiz.mavenShadePlugin.log4j2CacheTransformer.PluginsCacheFileTransformer">
            </transformer>
        </transformers>
    </configuration>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.github.edwgiz</groupId>
            <artifactId>maven-shade-plugin.log4j2-cachefile-transformer</artifactId>
            <version>2.8.1</version>
        </dependency>
    </dependencies>
</plugin>
 

Комментарии:

1. работает ли это, когда путь <transformer..../> не указан <executions></executions>