Плагин Maven Assembly - Multi-Release: правда - PullRequest
0 голосов
/ 18 марта 2020

Мое приложение с несколькими банками работает в Java 11 и показывает предупреждение, связанное с Log4j2:

ПРЕДУПРЕЖДЕНИЕ: sun.reflect.Reflection.getCallerClass не поддерживается. Это повлияет на производительность.

Это не имеет значения sh, но довольно беспокоит меня, так как команда по операциям (монитор AppDynamics) спросила меня об этом. Я прочитал, что мне нужно использовать запись «Multi-Release: true» в манифесте, но я не знаю, как сказать плагину Maven Assembly добавить его.

Я не использую другие плагин в пом. xml. Должен ли я использовать Maven Shade Plugin вместо этого?

В любом случае, вот раздел Maven Assembly Plugin моего pom. xml.

<plugin>
  <artifactId>maven-assembly-plugin</artifactId>
  <version>3.2.0</version>
  <configuration>
    <descriptorRefs>
      <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
  </configuration>
  <executions>
    <execution>
      <id>make-assembly</id>
      <phase>package</phase>
      <goals>
        <goal>single</goal>
      </goals>
    </execution>
  </executions>
</plugin>

Библиотека I ' В том числе (что я также написал) в качестве зависимости используется Log4j 2, как показано ниже:

<!-- Log4j 2 -->

<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-api</artifactId>
  <version>2.12.1</version>
</dependency>
<dependency>
  <groupId>org.apache.logging.log4j</groupId>
  <artifactId>log4j-core</artifactId>
  <version>2.12.1</version>
</dependency>

Как мне избавиться от этого предупреждения?

1 Ответ

0 голосов
/ 18 марта 2020

Вам необходимо установить для Multi-Release значение true в MANIFEST.MF банки. В плагине сборки вы можете сделать это, добавив

      <archive>
        <manifestEntries>
          <Multi-Release>true</Multi-Release>
        </manifestEntries>
      </archive>

в раздел конфигурации вашей конфигурации сборки.

Вы также можете использовать плагин jar, чтобы создать свой jar. Для этого вы бы сделали

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
        <manifestEntries>
            <Multi-Release>true</Multi-Release>
        </manifestEntries>
    </archive>
    <finalName>mr-jar-demo.jar</finalName>
  </configuration>
</plugin>
...