2015-09-14 3 views
1

У меня есть два проекта:МВН - впрыснуть log4j.properties в Maven плагин

  • Я сделал Maven Mojo компании: поколение-плагин, который генерирует код. Фаза Maven - сгенерированные источники.
  • В проекте клиента, я использую плагин следующим образом:

    <plugin> 
         <groupId>company</groupId> 
         <artifactId>generation-plugin</artifactId> 
         <version>1.0-SNAPSHOT</version> 
         <executions> 
          <execution> 
           <goals> 
            <goal>generate</goal> 
           </goals> 
          </execution> 
         </executions> 
        </plugin> 
    

Оба проекта поколения и проект клиента имеют log4j.properties в SRC/основные/ресурсов.

Проблема заключается в том, что во время генерации источников в клиентском проекте используется log4j.properties проекта генерации.

Можно впрыскивать log4j.properties проекта клиента в проект поколения, или другими словами, заменить log4j.properties проекта поколения с log4j.properties проекта клиента?

обновление

Когда log4j.properties проекта поколения перемещается в SRC/тест/ресурсы или просто удалены, проект клиент получает следующее предупреждение во время строительства:

log4j:WARN No appenders could be found for logger (org.jboss.logging). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Каким-то образом я должен быть в состоянии сказать проекту генерации использовать проект log4.properties из проекта клиента.

+0

Одним из возможных решений было бы не иметь log4j.properties внутри src/main/resources вашего плагина. Зачем вам это нужно в src/main/resources?Если он предназначен для тестирования, он должен быть внутри src/test/resources – Tunaki

+0

@Tunaki. Я обновлю свой вопрос. –

+0

Кажется, вы не используете [стандартный путь Mojo] (https://maven.apache.org/developers/mojo-api-specification.html) для регистрации сообщений. Есть ли конкретная причина? – Tunaki

ответ

0

Здесь не достаточно информации для решения проблемы, но вопрос неявно запрашивает некоторую информацию о том, как работает Maven и log4j.

  1. Maven создает отдельный загрузчик классов для каждого плагина по мере его выполнения. Этот плагин содержит объявленные зависимости (runtime + compile) самого плагина. Загрузочный загрузчик плагина не включает в себя цель/классы проекта; хотя некоторые плагины, которые должны изучать классы (для модификации кода), идут на дополнительные проблемы, чтобы сориться там.
  2. Log4j ищет log4j.properties в каком-то классе загрузчика. Возможно, log4j не использует правильный загрузчик классов, зависящий от версий log4j и Maven; вы можете попробовать установить загрузчик класса контекста потока в загрузчик классов, который загрузил ваше mojo и посмотреть, что произойдет.
  3. Теоретически, вы можете переместить log4j в журнал Maven mojo; Я не могу найти пример этого лжи, так что вам, возможно, придется самому закодировать его из документа log4j.
+0

Спасибо за информацию. Я углубись в нее и дам вам знать! –

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