Исключить файл свойств из подмодуля типа WAR в Maven

У меня сложный сценарий упаковки моих EAR-проектов, ниже приведено визуальное описание, чтобы полностью понять его:

ProjA.ear
 |-- ProjA.war
 |-- Util.war
 |   |-- WEB-INF
 |   |   |-- classes
 |   |   |   -- log4j.properties

Точно так же у меня есть еще один проект, структура которого:

ProjB.ear
 |-- ProjB.war
 |-- Util.war
 |   |-- WEB-INF
 |   |   |-- classes
 |   |   |   -- log4j.properties

Util.war - это общий проект (кроме log4j.properties) для ProjA и ProjB.

Ниже показано, как я указал зависимость Util.war как в ProjA, так и в ProjB:

    <dependency>
        <groupId>abc</groupId>
        <artifactId>xyz</artifactId>
        <version>${project.version}</version>
        <type>war</type>
    </dependency>

Теперь вопрос: поскольку у меня есть разные версии файла log4j.properties для каждого проекта, как я могу настроить Maven для добавления определенного файла ProjA при упаковке ProjA и использования другой версии при упаковке ProjB?

Пожалуйста, дайте мне знать, если вы не понимаете беспорядочный сценарий:).

С Уважением,

1 ответ

Я думаю, вы можете удалить свои log4j.properties из Util.war, потому что это зависит от приложения. вместо этого вы можете использовать для этого папку ProjA.ear/APP-INF/classes и папку ProjB/APP-INF/classes.

посмотрите, какая разница между папками app-inf и web-inf в приложениях JavaEE?

Ваш сервер приложений автоматически добавляет эту папку в Class-Path. Но помните о загрузке родительского первого / дочернего первого класса

посмотрите загрузку классов Java EE и Java SE

Однако в Java EE загрузчик классов сначала пытается загрузить сам класс, а затем делегировать загрузку классов этого класса его родительскому загрузчику классов.

Это утверждение зависит от вашего сервера приложений.

Другие вопросы по тегам