mvn - 将log4j.properties注入maven插件

时间:2015-09-14 08:06:35

标签: java maven log4j

我有两个项目:

  • 我制作了一个Maven MOJO 公司:generation-plugin ,它可以生成一些代码。 Maven阶段是 generate-sources
  • 在客户端项目中,我使用以下插件:

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

生成项目和客户端项目在 src / main / resources 中都有 log4j.properties

问题是在客户端项目中生成源时,会使用生成项目的 log4j.properties

是否可以将客户端项目的 log4j.properties 注入到生成项目中,换句话说,用<替换生成项目的 log4j.properties 客户项目的em> log4j.properties ?

更新

当生成项目的 log4j.properties 移动到 src / test / resources 或简单地删除时,客户端项目在构建期间会收到以下警告:

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

1 个答案:

答案 0 :(得分:0)

此处没有足够的信息来解决问题,但问题隐含地要求提供有关Maven和log4j如何工作的一些信息。

  1. Maven在执行时为每个插件创建一个单独的类加载器。该插件包含插件本身的声明的依赖项(运行时+编译) 。插件类加载器合并项目的目标/类;虽然一些需要检查类的插件(用于代码修改)会在那里找到额外的麻烦。
  2. Log4j在某些类加载器中查找log4j.properties。 log4j可能没有使用正确的类加载器,取决于log4j和Maven的版本;你可以尝试将线程上下文类加载器设置为加载mojo的类加载器,看看会发生什么。
  3. 理论上,您可以将log4j桥接到Maven mojo日志;我无法找到一个这样的例子,所以你可能需要自己从log4j doc编写代码。