2012-03-23 15 views
202

के मुख्य वर्ग को चलाएं मैंने मैवेन के साथ बनाया गया एक सरल कंसोल जावा एप्लिकेशन बनाया है।मेवेन प्रोजेक्ट

mvn run-app com.example.MainClass 

उत्तर

403

maven-exec-plugin का प्रयास करें: वहाँ एक रास्ता है कि मुख्य वर्ग (जो किसी भी तर्क की आवश्यकता नहीं है) की तरह एक Maven आदेश का उपयोग कमांड लाइन से चलाया जा सकता है। वहां से:

mvn exec:java -Dexec.mainClass="com.example.Main" 

यह आपकी कक्षा को JVM में चलाएगा। आप तर्क पारित करने के लिए -Dexec.args="arg0 arg1" का उपयोग कर सकते हैं।

आप Windows पर हैं, तो exec.mainClass और exec.args के लिए उद्धरण लागू होते हैं:

mvn exec:java -D"exec.mainClass"="com.example.Main" 

आप इस नियमित रूप से कर रहे हैं, तो आप pom.xml में पैरामीटर जोड़ सकते हैं और साथ ही:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <version>1.2.1</version> 
    <executions> 
    <execution> 
     <goals> 
     <goal>java</goal> 
     </goals> 
    </execution> 
    </executions> 
    <configuration> 
    <mainClass>com.example.Main</mainClass> 
    <arguments> 
     <argument>foo</argument> 
     <argument>bar</argument> 
    </arguments> 
    </configuration> 
</plugin> 
+0

यह भी एक अच्छा है। पता नहीं था कि यह अस्तित्व में था। –

+0

एक आकर्षण की तरह काम करता है –

+12

इस तरह से मुख्य श्रेणी को चलाने के लिए सुविधाजनक नहीं है :( – hugemeow

12

हालांकि मैवेन निष्पादन यहां चाल करता है, मुझे वास्तविक परीक्षण के लिए यह बहुत खराब लगता है। जबकि maven shell लिए इंतज़ार कर रहे, और उम्मीद यह दूसरों की मदद कर सकता है, मैं अंत में इस रेपो के लिए सामने आए mvnexec

यह क्लोन, और अपने रास्ते में script कहीं सिमलिंक। मैं ~/bin/mvnexec का उपयोग करता हूं, क्योंकि मेरे पास मेरे पथ में ~/bin है। मुझे लगता है कि mvnexec स्क्रिप्ट के लिए एक अच्छा नाम है, लेकिन सिमलिंक बदलने के लिए आप पर निर्भर है ...

अपनी परियोजना है, जहां आप src और लक्ष्य dirs देख सकते हैं की जड़ से यह लॉन्च किया गया।

मुख्य विधि के साथ कक्षाओं के लिए स्क्रिप्ट खोज, एक का चयन की पेशकश एक (mavenized JMeld परियोजना के साथ उदाहरण) का चयन करने के

$ mvnexec 
1) org.jmeld.ui.JMeldComponent 
2) org.jmeld.ui.text.FileDocument 
3) org.jmeld.JMeld 
4) org.jmeld.util.UIDefaultsPrint 
5) org.jmeld.util.PrintProperties 
6) org.jmeld.util.file.DirectoryDiff 
7) org.jmeld.util.file.VersionControlDiff 
8) org.jmeld.vc.svn.InfoCmd 
9) org.jmeld.vc.svn.DiffCmd 
10) org.jmeld.vc.svn.BlameCmd 
11) org.jmeld.vc.svn.LogCmd 
12) org.jmeld.vc.svn.CatCmd 
13) org.jmeld.vc.svn.StatusCmd 
14) org.jmeld.vc.git.StatusCmd 
15) org.jmeld.vc.hg.StatusCmd 
16) org.jmeld.vc.bzr.StatusCmd 
17) org.jmeld.Main 
18) org.apache.commons.jrcs.tools.JDiff 
#? 

यदि एक चयन किया जाता है (टाइपिंग संख्या), आप तर्क के लिए शीघ्र कर रहे हैं (आप कर सकते हैं mvnexec -P से बचें)

डिफ़ॉल्ट रूप से यह प्रत्येक रन प्रोजेक्ट को संकलित करता है। लेकिन आप बच सकते हैं कि mvnexec -B

का उपयोग कर यह परीक्षण कक्षाओं -M या --no-main, या केवल मुख्य वर्गों -T या --no-test में में केवल खोज करने के लिए अनुमति देता है। नाम विकल्प -f <whatever>

आशा है कि यह आपको कुछ समय बचा सकता है, मेरे लिए यह एक फ़िल्टर है।

+1

ध्यान दें कि यह बॉक्स से बाहर नहीं होगा विंडोज़ पर जिनके पास प्रोग्राम की आवश्यकता नहीं है। –

+0

यह सच है। विंडोज़ के लिए आप हमेशा * nix shell जैसे grep, sed, cut के साथ * nix shell प्राप्त करने के लिए साइगविन का उपयोग कर सकते हैं ... – albfan

+0

बहुत समय बचाया, thnx –

संबंधित मुद्दे