Зависимости журналирования все еще включены в папку lib, несмотря на то, что исключение настраивается в spring-boot-maven-plugin - PullRequest
0 голосов
/ 20 сентября 2019

РЕДАКТИРОВАТЬ: Оказывается, я просто плохо ищу вещи.Война до изменений не имела этих библиотек, а оригинальная .war (до переупаковки) уже содержит их.Так что проблема кроется где-то еще, spring-boot-maven-plugin не имеет к этому никакого отношения.До сих пор не знаю, откуда они берутся, поскольку я также пытался просто удалить зависимость везде, где бы я ее не нашел, ну да ладно, посмотрите мое первое предложение.

Я работаю над тем, чтобы программное обеспечение моей фирмы работало какприложение с весенней загрузкой.Поскольку наша война может быть развернута в различных средах, таких как SAP Cloud Platform, библиотеки журналов не следует включать в папку lib, чтобы предотвратить конфликты.Тем не менее, некоторые библиотеки журналов (в частности, jul-to-slf4j, log4j-api и log4j-to-self4j) всегда находятся в моей папке lib, независимо от того, насколько конкретны мои исключения.Другие библиотеки (две наши, которые нужны для тестов или должны быть включены в файл классов) исключены должным образом.

Я попытался установить тег для определенных библиотек, а также просто исключить всю группу,После этого я попытался просто исключить сами зависимости, но они все равно как-то обнаруживаются после зависимости mvn: дерево говорит мне, что их больше нет.

Это конфигурация плагина:

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <executions>
        <execution>
            <goals>
                <goal>
                    repackage
                </goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <mainClass>de.firm.integration.BaseSpringConfiguration</mainClass>
        <excludes>
            <exclude>
                <groupId>de.firm.integration</groupId>
                <artifactId>eis-generator-odata-api</artifactId>
            </exclude>
            <exclude>
                <groupId>de.firm.integration</groupId>
                <artifactId>eis-admin-ui</artifactId>
            </exclude>
            <exclude>
                <groupId>org.slf4j</groupId>
                <artifactId>jul-to-slf4j</artifactId>
            </exclude>
            <exclude>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </exclude>
            <exclude>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-jul</artifactId>
            </exclude>
            <exclude>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
            </exclude>
            <exclude>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-to-slf4j</artifactId>
            </exclude>
        </excludes>
    </configuration>
</plugin>

Я ожидаю, что созданная мной война больше не будет включать эти библиотеки журналов в мою папку WEB-INF / lib.Вместо этого они продолжают включаться.

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

Попробуйте это ... Включение и исключение файлов из WAR

Можно включить или исключить определенные файлы из файла WAR, используя и параметры конфигурации.

Таким образом, вы по существу просто укажите WEB-INF / lib / log4j- .jar, WEB-INF / lib / jul- .jar внутри этих тегов, чтобы исключить все пакеты, начиная с log4j и jul.

<plugins>
  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.3</version>
    <configuration>
      <packagingExcludes>
       WEB-INF/lib/log4j-*.jar, WEB-INF/lib/jul-*.jar
      </packagingExcludes>
    </configuration>
  </plugin>
</plugins>

0 голосов
/ 20 сентября 2019

Каркасы журналирования, такие как slf4j или log4j2, имеют компонент API и компонент времени выполнения.Ваш код должен зависеть только от компонента API.Это компонент времени выполнения, который следует избегать при развертывании в конкретной среде, поскольку у этой среды может быть собственная версия этого компонента времени выполнения.В вашем примере библиотеки, такие как log4j-to-slf4j, log4j-api, являются компонентами API.Это нормально для них, чтобы присутствовать на войне.Однако вы должны убедиться, что ваша среда предоставляет совместимый компонент ведения журнала времени выполнения.

См. Объяснение «предоставленной» области здесь: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope

...