使用Maven Exec插件时应该在哪里找到log4j.properties?

时间:2011-09-27 08:45:02

标签: maven-2 configuration log4j

我正在尝试在我使用exec-maven-plugin执行的项目中使用log4j。我尝试将文件放在以下位置:

$PROJECT_HOME
$PROJECT_HOME/src/main/resources
$PROJECT_HOME/target
$PROJECT_HOME/target/classes

对于文件的所有位置,我在执行代码时收到以下消息:

log4j:WARN No appenders could be found for logger (mypacakge.MyClass).
log4j:WARN Please initialize the log4j system properly.

log4j.properties文件应该放在哪里?


exec-maven-plugin config:

...
<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
        <mainClass>mypackage.Main</mainClass>
    </configuration>
</plugin>
...

3 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 将属性文件放在
  2. ./的src /主/资源/的log4j.xml

    1. 您可以从命令行指定它:
    2. $ mvn compile exec:java -Dexec.classpathScope = compile -Dexec.mainClass = com.lei.java.sample.Test -Dlog4j.configuration = file:./ log4j.xml

答案 1 :(得分:0)

我不确定这是正确的方法(因为我不知道这个插件),但您可以使用插件的配置来指定VM的类路径文件的正确位置:

<configuration>
   <executable>maven</executable>
   <!-- optional -->
   <workingDirectory>/tmp</workingDirectory>
   <arguments>
       <argument>-classpath</argument>
       <argument>/path/to/dirthatcontainslog4J</argument>
      ...
   </arguments>
</configuration>

使用这样一个插件的目的是什么? 如果这是为了测试你的应用程序,你应该使用maven-dependency-plugin:http://www.sonatype.com/books/mvnex-book/reference/customizing-sect-custom-packaged.html

您可以在此处找到更多信息: maven jar-with-dependencies log4j

How can I create an executable JAR with dependencies using Maven?

此致

答案 2 :(得分:0)

实际上,log4j提供了手动定位配置文件的命令行选项支持。但是它用于java命令本身,你可以在Maven构建中通过-Dexec.args选项直接传递java选项:

$ mvn -Dexec.args="-Dlog4j.configurationFile='./log4j2.xml' -classpath /previously/configured/path" org.codehaus.mojo:exec-maven-plugin:1.2.1:exec

此外,exec.args中的论据也可以永久写入Mojo的<arguments>部分,as said in document

<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>exec-maven-plugin</artifactId>
  <version>1.6.0</version>
  <executions>
    ...
  </executions>
  <configuration>
    <executable>maven</executable>
    <arguments>
      <argument>-Dlog4j.configurationFile="./log4j2.xml"</argument>
      ...
    </arguments>
  </configuration>
</plugin>