2011-09-27 11 views
6

मैं एक परियोजना में log4j का उपयोग करने की कोशिश कर रहा हूं जिसे मैं exec-maven-plugin के साथ निष्पादित कर रहा हूं। मैं निम्न स्थानों में फ़ाइल रखकर की कोशिश की है:मैवेन एक्ज़ेक प्लगइन का उपयोग करते समय log4j.properties कहां स्थित होना चाहिए?

$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 फ़ाइल स्थित होना चाहिए ?


कार्यकारी-Maven-प्लगइन config:

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

क्या आप अपना 'exec-maven-plugin' कॉन्फ़िगरेशन जोड़ सकते हैं। – amra

+0

निष्पादन चरण क्या निष्पादन चरण से जुड़ा हुआ है? – MaDa

उत्तर

0

मुझे यकीन है कि यह सही तरीका नहीं है (क्योंकि मैं इस प्लगइन पता नहीं है) नहीं कर रहा हूँ, लेकिन आप के विन्यास का उपयोग कर सकते वीएम के क्लासपाथ को निर्दिष्ट करने के लिए प्लगइन को अपनी फ़ाइल का सही स्थान:

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

ऐसी प्लगइन का उपयोग करने का उद्देश्य क्या है? इस क्रम में अपने ऐप का परीक्षण करने के लिए, तो आप शायद Maven-निर्भरता-प्लगइन का उपयोग करना चाहिए है: 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?

सादर

1

आप दो विकल्प हैं:

  1. संपत्ति फ़ाइल को नीचे रखो

./src/main/resources/log4j.xml

  1. आप कमांड लाइन से निर्दिष्ट कर सकते हैं:

$ mvn कार्यकारी संकलन: जावा -Dexec.classpathScope = संकलन -Dexec.mainClass = com.lei.java.sample.Test -Dlog4j.configuration = file: ./ log4j.xml

0

दरअसल, log4j ने मैन्युअल रूप से कॉन्फ़िगरेशन फ़ाइल को ढूंढने के लिए कमांड लाइन विकल्प समर्थन प्रदान किया है। हालांकि यह java आदेश के लिए ही प्रयोग किया जाता है, और आप -Dexec.args विकल्प के माध्यम से Maven निर्माण में उपयोग सीधे जावा विकल्पों पारित करने के लिए कर सकते हैं:

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

इसके अलावा, exec.args में तर्क भी मोजो के <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> 
संबंधित मुद्दे