2010-04-06 13 views
6

के लिए अतिरिक्त पथ जोड़ें मैं exec-maven-plugin के लिए एक अतिरिक्त क्लास पथ जोड़ना चाहता हूं।
% वर्गपथ के अलावा, मैं संसाधनों (/ उपयोगकर्ता/कॉर्नप/संसाधन) वाली निर्देशिका में एक अतिरिक्त पथ जोड़ना चाहता हूं। वर्तमान में, मेरी पोम इस तरह दिखता है:exec-maven-plugin

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <configuration> 
    <executable>java</executable> 
    <classpathScope>runtime</classpathScope> 
    <arguments> 
     <argument>%classpath:/Users/kornp/resources</argument> 
     <argument>org.drrabbit.maventest.App</argument> 
    </arguments> 
    </configuration> 
</plugin> 

मैं इस कॉन्फ़िगर करना चाहिए?

उत्तर

2

क्या आपने commandlineArgs पैरामीटर का उपयोग करने का प्रयास किया है (जैसा कि exec example में उल्लिखित है)?

+0

हाँ, मैंने किया था, लेकिन फिर % classpath अब और काम नहीं करता है। –

+0

@ कॉर्नप आरएफ, क्षमा करें, तो यह उदाहरण की मेरी समझ नहीं थी। मुझे नहीं पता कि यद्यपि कोई और तरीका है या नहीं। क्लासपाथ मैन्युअल रूप से एक विकल्प सेट कर रहा है? –

+0

हां, यह एक विकल्प है, लेकिन इसमें बहुत सारी जार फ़ाइलें शामिल हैं। तो, यह एक कठिन काम होगा। हालांकि सुझाव के लिए धन्यवाद। –

0

ठीक है,

मैं इतना है कि आदेश पंक्ति तर्क पूरी तरह से निर्दिष्ट किया जा सकता है (% classpath पैरामीटर सहित)

+0

यदि आप परिणाम को उत्तर में कॉपी करना चाहते हैं तो आपको अंततः स्वयं सीखने वाले बैज के लिए 3 अप वोट प्राप्त हो सकते हैं। – Martin

+0

मार्टिन, परिणाम का उत्तर देने के साथ आपका क्या मतलब है? –

+0

@ कॉर्नपी, आपकी अनुकूलित प्लगइन कहां है? – Gili

1

हालांकि यह कम सुरुचिपूर्ण है, लेकिन प्लगइन antrun का उपयोग करने जा प्लगइन अनुकूलित करना चाहिए काम करता है:

<plugin> 
    <artifactId>maven-antrun-plugin</artifactId> 
    <executions> 
     <execution> 
      <id>runSomething</id> 
      <phase>package</phase> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      <configuration> 
       <target> 
        <property name="runtime_classpath" refid="maven.runtime.classpath"/> 

        <java classname="org.drrabbit.maventest.App" 
          fork="true" 
          failonerror="true" 
          maxmemory="512m"> 

         <classpath> 
          <pathelement path="${project.build.directory}/some/extra/resources" /> 
          <pathelement path="${runtime_classpath}" /> 
         </classpath> 
        </java> 
       </target> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

हालांकि, प्रोजेक्ट के बाहर कहीं भी अतिरिक्त संसाधनों को रखने का अच्छा विचार नहीं लगता है, जैसा कि आपके ऑप ने सुझाव दिया था। आपको या तो परियोजना के हिस्से के रूप में डालने पर विचार करना चाहिए, या इसे एक जार बनाना और मैवेन रेपो में तैनाती करना चाहिए ताकि आप इसे प्लगइन निर्भरता के रूप में रख सकें।

5

मेरे पास मेरे स्रोत फ़ोल्डर के बाहर एक विशिष्ट निर्देशिका में कुछ कॉन्फ़िगरेशन फ़ाइलें हैं। इसलिए मैंने अपनी pom.xml फ़ाइल में additonal संसाधनों को परिभाषित किया।

मेरी नमूना निर्देशिका संरचना है:

+ src 
+ conf 
    - app.properties 
    - log4j.xml 
- pom.xml 

मेरी pom.xml:

<build> 
    <resources> 
    <resource> 
     <directory>conf</directory> 
    </resource> 
    <resource> 
     <directory>src/main/resources</directory> 
    </resource> 
    </resources> 

    <plugins> 
    <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <version>1.2.1</version> 
     <configuration> 
     <executable>java</executable> 
     <mainClass>com.mycompany.MyMainClass</mainClass> 
     </configuration> 
    </plugin> 
    </plugins> 
<build> 

अब हम कार्यक्रम क्रियान्वित हो सकता है:

mvn clean compile exec:java 
+2

मुझे इस मामले में काम करने में समस्या है जहां मेरी मुख्य कक्षा एक निर्भरता से आती है, न कि प्रोजेक्ट। – kutschkem

+0

बहुत बहुत धन्यवाद! यह वास्तव में मदद करता है! – Yuanhang