#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>