Исключить файл свойств из подмодуля типа 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 загрузчик классов сначала пытается загрузить сам класс, а затем делегировать загрузку классов этого класса его родительскому загрузчику классов.
Это утверждение зависит от вашего сервера приложений.