2014-02-20 3 views
6

Что происходит, когда у меня есть приложение maven, состоящее из нескольких модулей, и каждый из них содержит файл log4j.properties, они объединяются или перезаписываются определенным (если да, какой)?log4j.properties в нескольких модулях maven?

Update: После вашего совета я теперь исключены дополнительные свойства, как это в моих POMS:

<dependency> 
[...] 
<excludes><exclude>**/log4j.properties</exclude></excludes> 
</dependency> 

PS: Тем не менее, «исключает» тег не распознается Maven и «исключений» работает только для зависимостей, а не ресурсов.

Update

Только что узнал в log4j in a multi-module Maven project, что я могу просто поставить log4j.properties в SRC/тест/ресурсы таким образом, чтобы они не были включены в любом случае в исполняемом модуле !.

+1

Чтобы исключить ресурсы, вы должны использовать плагин Maven Resources (http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html). Иерархия тегов - build/resources/excludes/exclude – polypiel

+0

Но как я могу исключить ее из определенной зависимости, но сохранить ее из другой? –

ответ

6

Они никогда не сливаются. Как правило, файлы log4j.properties перезаписываются, и вы не можете точно определить, какой из них.

Это зависит от последовательности загрузки файлов Jar контейнером.

Поэтому для основного модуля вашего приложения рекомендуется иметь один log4j.properties с несколькими добавками для других подмодулей.

Но это создало бы проблему при одновременном тестировании/работе с подмодулями независимо от того, как он прекратит ведение журнала при тестировании отдельно. В нашем случае исходная версия pom всегда использовалась для исключения ресурса (который будет исключать файл свойств при построении jar). Однако в разработчике local разработчики использовали для комментариев, что исключение в POM и может работать независимо.

+0

Я не понимаю, что вы подразумеваете под «в локальном разработчике». Итак, существуют различные log4j.properties для тестирования и самого веб-приложения? –

+1

Я говорил о 'pom.xml', исходная версия управления всегда будет исключать файл log4j.properties при создании файла jar. Но предположим, что разработчик хочет протестировать в своем местном, ему нужно прокомментировать исключение в 'pom', чтобы эти log4j.properties были включены в его Jar для локального тестирования. – sakura

+0

Слишком сложно для меня поддерживать pom.xml, который локально отличается от контроля версий, но я понимаю подход! Я просто поставлю другие log4j.properties в src/test/resource с этого момента. –

1

Например, если у вас есть 2 проекта один для данных и другой для презентации. И оба имеют log4j.properties. И когда вы развертываете военный файл, который также содержит файл данных внутри него. Только проект презентации имеет эффект. И log4.properties в проекте данных будет проигнорировано. Они никогда не будут слиты или написаны сами по себе.

Смежные вопросы