Исключить файл свойств из подмодуля типа 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?

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

С уважением,


person Jaffy    schedule 11.12.2014    source источник


Ответы (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 загрузчик классов сначала пытается загрузить сам класс, а затем делегирует загрузку этого класса родительскому загрузчику классов.

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

person StefanHeimberg    schedule 20.01.2015