Где должен находиться файл log4j.properties при использовании плагина Maven Exec? - PullRequest
7 голосов
/ 27 сентября 2011

Я пытаюсь использовать log4j в проекте, который я выполняю с помощью exec-maven-plugin. Я пытался разместить файл в следующих местах:

$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:

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

Ответы [ 3 ]

2 голосов
/ 26 января 2013

У вас есть два варианта:

  1. Поместите файл свойств в

. / Src / main / resources / log4j.xml

  1. Вы можете указать это из командной строки:

$ mvn compile exec: java -Dexec.classpathScope = compile -Dexec.mainClass = com.lei.java.sample.Test -Dlog4j.configuration =файл: ./ log4j.xml

0 голосов
/ 13 апреля 2017

На самом деле, 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 также могут быть записаныпостоянно в секцию <arguments> Моджо , как сказано в документе :

<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>
0 голосов
/ 05 июня 2012

Я не уверен, что это правильный путь (потому что я не знаю этот плагин), но вы можете использовать конфигурацию плагина, чтобы указать пути к классам виртуальной машины правильное расположение вашего файла:

<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-с-зависимостями log4j

Как я могу создать исполняемый JAR с зависимостями, используя Maven?

Привет

...