Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 当使用Maven Exec插件时,log4j.properties应该位于哪里?_Maven 2_Configuration_Log4j - Fatal编程技术网

Maven 2 当使用Maven Exec插件时,log4j.properties应该位于哪里?

Maven 2 当使用Maven Exec插件时,log4j.properties应该位于哪里?,maven-2,configuration,log4j,Maven 2,Configuration,Log4j,我试图在一个使用execmaven插件执行的项目中使用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:W

我试图在一个使用execmaven插件执行的项目中使用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>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <version>1.2</version>
    <configuration>
        <mainClass>mypackage.Main</mainClass>
    </configuration>
</plugin>
...
。。。
org.codehaus.mojo
execmaven插件
1.2
mypackage.Main
...

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

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

专家
/tmp

您可以在此处找到更多信息:

关于

您有两个选择:

  • 将属性文件置于
  • ./src/main/resources/log4j.xml

  • 可以从命令行中指定它:

  • $mvn compile exec:java-Dexec.classpathScope=compile-Dexec.mainClass=com.lei.java.sample.Test-Dlog4j.configuration=file:./log4j.xml

    实际上,log4j提供了用于手动定位配置文件的命令行选项支持。但是,它用于
    java
    命令本身,您可以在Maven building中通过
    -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的

    
    org.codehaus.mojo
    execmaven插件
    1.6.0
    ...
    专家
    -Dlog4j.configurationFile=“./log4j2.xml”
    ...
    
    能否附加您的
    exec-maven插件
    配置。exec插件绑定到哪个执行阶段?
    <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>