2011-09-27 12 views
6

Estoy tratando de usar log4j en un proyecto que estoy ejecutando con el complemento exec-maven. He intentado colocar el archivo en los siguientes lugares:¿Dónde debe ubicarse log4j.properties cuando utiliza Maven Exec Plugin?

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

Para todas las ubicaciones del archivo, estoy recibiendo el siguiente mensaje cuando se ejecuta el código:

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

¿Dónde debe el archivo log4j.properties se encuentra ?


exec-maven-plugin de configuración:

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

Podría adjuntar su configuración 'exec-maven-plugin'. – amra

+0

¿A qué fase de ejecución está vinculado el complemento de administrador? – MaDa

Respuesta

0

No estoy seguro de que este es el camino correcto (porque no sé este plugin), pero es posible utilizar la configuración de la plugin para especificar la ruta de clase de la máquina virtual de la ubicación correcta del archivo:

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

¿Cuál es el propósito de usar un plugin de este tipo? Si este es el fin de probar su aplicación, que es mejor usar Maven-dependencia-plugin: http://www.sonatype.com/books/mvnex-book/reference/customizing-sect-custom-packaged.html

Puede encontrar más información aquí: maven jar-with-dependencies log4j

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

Saludos

1

Usted tiene dos opciones:

  1. Coloque el archivo de propiedad en

./src/main/resources/log4j.xml

  1. Puede especificar desde la línea de comandos:

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

0

En realidad, log4j ha proporcionado compatibilidad con la opción de línea de comandos para localizar manualmente el archivo de configuración. Sin embargo, se utiliza para java propio comando, y usted podría utilizarlo en la construcción Maven través -Dexec.args opción para pasar las opciones de Java directamente:

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

Además, los argumentos en exec.args también se podría escribir persistentemente en la sección de 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> 
Cuestiones relacionadas