2010-08-16 9 views
62

से खोल आदेश निष्पादित करना चाहता हूं मैं मैवेन के साथ लिनक्स खोल आदेश निष्पादित करना चाहता हूं। यहाँ मैं क्या करने की कोशिश की है:मैवेन के pom.xml

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <executable>hostname</executable> 
    </configuration> 
</plugin> 
+0

कृपया अपने प्रश्न को साफ करें और अपने प्रश्न में pom.xml प्रारूपित करें। यह पठनीय नहीं है। – zengr

+9

मेरा अशिष्ट होने का मतलब नहीं है लेकिन आपको वास्तव में प्रश्न पूछने के बारे में जानने की जरूरत है, हम मानसिक नहीं हैं। तुमने क्या किया? तुम्हें क्या मिला? परिणाम की क्या उम्मीद है? –

उत्तर

109

यहाँ क्या मेरे लिए काम कर रहा है:

<plugin> 
    <artifactId>exec-maven-plugin</artifactId> 
    <groupId>org.codehaus.mojo</groupId> 
    <executions> 
    <execution><!-- Run our version calculation script --> 
     <id>Version Calculation</id> 
     <phase>generate-sources</phase> 
     <goals> 
     <goal>exec</goal> 
     </goals> 
     <configuration> 
     <executable>${basedir}/scripts/calculate-version.sh</executable> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 

+6

मैं यह जोड़ना चाहता हूं कि यह प्लगइन के (कम से कम) संस्करण 1.5.0 के साथ काम नहीं करता है, क्योंकि ' 'को' ' के बाद पालन करना चाहिए और उसमें नहीं रखा जाना चाहिए। इस सरल वाक्य रचनात्मक गलती को खोजने के लिए मुझे थोड़ी देर लग गई। मेवेन का त्रुटि आउटपुट वास्तव में सहायक नहीं है। – joergl

+1

तैनाती चरण के बाद हम स्क्रिप्ट को चलाने के लिए क्या चरण या लक्ष्य प्रदान करने की आवश्यकता है ?? – Lucy

+0

क्या यह विंडोज पर काम करता है? –

29

समस्या यहाँ है कि मैं क्या उम्मीद है पता नहीं है कि। अपने मौजूदा सेटअप के साथ, कमांड लाइन पर प्लगइन लागू सिर्फ काम करेगा:

 
$ mvn exec:exec 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3491937 
[INFO] task-segment: [exec:exec] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [exec:exec {execution: default-cli}] 
[INFO] laptop 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
... 

वैश्विक configuration प्रयोग किया जाता है, hostname आदेश निष्पादित किया जाता है (laptop मेरी होस्ट नाम है)। दूसरे शब्दों में, प्लगइन अपेक्षित के रूप में काम करता है।

अब, अगर आप चाहते हैं एक प्लगइन का निर्माण के हिस्से के रूप निष्पादित करने के लिए, आप बाँध एक विशिष्ट चरण पर एक लक्ष्य के लिए है। उदाहरण के लिए, compile पर बाध्य करने के लिए:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.1.1</version> 
    <executions> 
     <execution> 
     <id>some-execution</id> 
     <phase>compile</phase> 
     <goals> 
      <goal>exec</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <executable>hostname</executable> 
    </configuration> 
    </plugin> 

और फिर:

 
$ mvn compile 
[INFO] Scanning for projects... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Q3491937 
[INFO] task-segment: [compile] 
[INFO] ------------------------------------------------------------------------ 
[INFO] [resources:resources {execution: default-resources}] 
[INFO] Using 'UTF-8' encoding to copy filtered resources. 
[INFO] skip non existing resourceDirectory /home/pascal/Projects/Q3491937/src/main/resources 
[INFO] [compiler:compile {execution: default-compile}] 
[INFO] Nothing to compile - all classes are up to date 
[INFO] [exec:exec {execution: some-execution}] 
[INFO] laptop 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD SUCCESSFUL 
[INFO] ------------------------------------------------------------------------ 
... 

ध्यान दें कि आप एक execution अंदर एक configuration निर्दिष्ट कर सकते हैं।

+0

[ERROR] निर्मित त्रुटि [INFO] -------------------- -------------------------------------------------- [0] प्लगइन 'exec-Maven-प्लगइन' के लिए परिभाषा के अंदर निम्न निर्दिष्ट करें: - [जानकारी] एक या अधिक आवश्यक प्लगइन मापदंडों 'exec कार्यकारी': के लिए याद आ रही अमान्य हैं/ <विन्यास> । .. VALUE -या- कमांड लाइन पर , निर्दिष्ट करें: '-Dexec.executable = VALUE' मैं यह त्रुटि अब मिलता है। – NareshKumar

+2

@ gnash-85: मुझे अभी भी पता नहीं है कि आप क्या कर रहे हैं।मैंने सटीक स्निपेट ** ** ** प्रदान किया था और ऊपर दिखाए गए अनुसार कोई समस्या नहीं थी। यह दिखाने के लिए कृपया अपना प्रश्न अपडेट करें कि आप कैसे मेवेन का आह्वान करते हैं (और यदि आपने कुछ बदल दिया है तो आपकी वर्तमान कॉन्फ़िगरेशन क्या है)। –

+0

मैंने एक ही कोड को एक बच्चे मॉड्यूल में रखा है। और मैं mvn exec निष्पादित करने की कोशिश कर रहा हूं: पैरेंट pom.xml से निष्पादित करें। और मुझे यह त्रुटि मिलती है। लेकिन जब मैं इसे व्यक्तिगत रूप से निष्पादित करता हूं तो यह काम कर रहा है। – NareshKumar

2

हल हो गया। समस्या यह है कि, निष्पादन योग्य लिनक्स में एक अलग तरीके से काम कर रहा है। यदि आप .sh फ़ाइल को चलाने के लिए चाहते हैं, तो आपको नीचे दिए गए तरीके से लिखना चाहिए। इसे pom.xml

<plugin> 
     <artifactId>exec-maven-plugin</artifactId> 
    <version>1.6.0</version> 
     <groupId>org.codehaus.mojo</groupId> 
     <executions> 
      <execution><!-- Run our version calculation script --> 
       <id>Renaming build artifacts</id> 
       <phase>package</phase> 
       <goals> 
        <goal>exec</goal> 
       </goals> 
       <configuration> 
        <executable>bash</executable> 
      <commandlineArgs>handleResultJars.sh</commandlineArgs> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin>