Использование разных log4j2.xml для каждого профиля maven

#spring-boot #maven #configuration #log4j

#весенняя загрузка #maven #конфигурация #log4j

Вопрос:

Использование maven и springbooot. Я хотел бы использовать разные конфигурации файлов (log4j2.xml , application.properties) для каждой среды (dev, сертификат). У меня есть два профиля, созданных на моем pom.xml файл, также у меня есть две папки в src / main / resources с конфигурациями каждого файла (dev и cert). Я хотел бы включить эти файлы в зависимости от профиля, который я использую. У меня есть другие файлы в каталоге, поэтому я не хочу использовать способ создания двух маршрутов и дубликатов файлов, я бы хотел просто включить все в src / main / resources и файлы в каталоге dev или cert.

введите описание изображения здесь

Я пытался использовать :

 <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>3.3.1</version>
                <configuration>
                    <packagingIncludes>src/main/resources/{resources.directory}</packagingIncludes>
                </configuration>
            </plugin>
  

Но я получаю

[ОШИБКА] Не удалось выполнить цель org.springframework.boot:spring-boot-maven-plugin: 1.4.3.РЕЛИЗ: переупаковка (по умолчанию) в проекте NProWebApp: выполнение по умолчанию цели org.springframework.boot:spring-boot-maven-plugin:1.4.3.РЕЛИЗ: ошибка переупаковки: не удалось найти основной класс -> [Справка 1]

РЕДАКТИРОВАТЬ: добавление профилей в maven :

 <profiles>
    <profile>
        <id>dev</id>
        <properties>
            <packaging.type>jar</packaging.type>
        </properties>
    </profile>
    <profile>
        <id>cert</id>
        <properties>
            <packaging.type>war</packaging.type>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>
  

Ответ №1:

Вам не нужно ничего делать с Maven. Просто упакуйте все файлы вместе и создайте файлы конфигурации spring формата application-{profile}.properties. Затем в этом файле определите местоположение вашей конфигурации ведения журнала, используя logging.config=log4j2-{profile}.xml, где {profile} — это имя профиля для текущего файла.

Обратите внимание, что в yml вы также можете поместить несколько конфигураций профиля в одно приложение.yml-файл.

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

1. Привет, твое решение звучит неплохо, но когда я создавал war, оно содержало оба application.properties (dev и cert), и оба log4j.xml Я думаю, чего-то не хватает, чтобы указать maven, какие файлы принимать, я прав? Я собираюсь отредактировать вопрос, чтобы добавить информацию о профилях