2008-10-15 8 views
112

से एक्लिप्स जावा प्रोजेक्ट बनाएं कमांड लाइन से ग्रहण आधारित जावा प्रोजेक्ट को संकलित करने का कोई तरीका है?कमांड लाइन

मैं अपने निर्माण को स्वचालित करने की कोशिश कर रहा हूं (फ़ाइनलबिल्डर का उपयोग नहीं कर रहा हूं), और मैं न तो जावा और न ही ग्रहण विशेषज्ञ हूं। मैं शायद यह समझ सकता हूं कि सीधे जावा कमांड लाइन विकल्पों के साथ ऐसा कैसे करें, लेकिन फिर ग्रहण परियोजना बहुत बर्बाद प्रयास की तरह महसूस करती है।

यदि घटना के तहत एक ग्रहण परियोजना को संकलित करने का कोई तरीका नहीं है, तो ग्रहण के भीतर से आवश्यक जावा कमांड लाइन उत्पन्न करने का कोई तरीका है? या क्या ऐसी कुछ फाइलें हैं जिन्हें मैं दृश्यों के पीछे कर संकलन चरणों को खोजने के लिए चारों ओर पोक कर सकता हूं?


दोस्तों, मैं एक जवाब है कि नहीं चींटी शामिल की तलाश में हूँ। मुझे मूल प्रश्न दोबारा दोहराएं ....... क्या कमांड लाइन से एक्लिप्स परियोजना बनाने का कोई तरीका है?

मुझे नहीं लगता कि यह देखते हुए कि मैं दृश्य स्टूडियो के लिए कुछ इस तरह कर सकते हैं एक अनुचित सवाल यह है कि है:

devenv.exe /build "Debug|Any CPU" "C:\Projects\MyProject\source\MyProject.sln" 
+3

इसके लिए प्लगइन/जार कैसे नहीं है !! – Kieveli

+1

ठीक है ... मैंने एक नया सही उत्तर जोड़ा। – Kieveli

उत्तर

55

आप एक के माध्यम से ग्रहण परियोजना का निर्माण कर सकते कमांड लाइन से कार्यक्षेत्र:

eclipsec.exe -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild 

यह अपने कार्यक्षेत्र स्वचालित रूप से निर्माण करने के लिए jdt apt प्लगइन का उपयोग करता है। इसे 'हेडलेस बिल्ड' के रूप में भी जाना जाता है। पता लगाने के लिए मुश्किल है। यदि आप एक Win32 exe उपयोग नहीं कर रहे हैं, तो आप इस कोशिश कर सकते हैं:

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild 

अद्यतन

कई साल पहले "विषुव लांचर"

https://wiki.eclipse.org/Equinox_Launcher

साथ ग्रहण की जगह startup.jar ग्रहण मंगल ग्रह पर (मैकॉक्स):

java -jar /Applications/Eclipse.app/Contents/Eclipse/plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -noSplash -data "workspace" -application org.eclipse.jdt.apt.core.aptBuild 

-data पैरामीटर आपके कार्यक्षेत्र का स्थान निर्दिष्ट करता है।

विषुव लॉन्चर के लिए संस्करण संख्या आपके ग्रहण के किस संस्करण पर निर्भर करेगी।

+3

भले ही मैं इस परियोजना से आगे बढ़ गया हूं और यह सत्यापित नहीं कर सकता कि यह उत्तर वास्तव में काम करता है या नहीं, मैं इसे स्वीकार किए गए उत्तर को बदल रहा हूं। क्योंकि यह इंगित करता है कि ग्रहण में वास्तव में कमांड लाइन स्विच होता है। –

+3

बस एक विचार - ऐसा लगता है कि यह केवल पूर्व-मौजूदा कार्यक्षेत्रों के लिए काम करता है। मुझे लगता है कि यह मुश्किल है, उदाहरण के लिए, स्रोत नियंत्रण से परियोजना को चेकआउट करें और इसे इस तरह से बनाएं। – John

+0

मेरा मानना ​​है कि मेरा वर्कस्पेस svn भंडार के लिए प्रतिबद्ध था। यह या तो सापेक्ष पथ, या मिलान निर्देशिका संरचनाओं था। – Kieveli

2

सामान्य apporoach दूसरी तरह के आसपास काम करता है: आप अपने निर्माण maven या के आधार पर बनाने के ant और फिर अपनी पसंद के आईडीई के लिए एकीकरण का उपयोग करें ताकि आप इससे स्वतंत्र हों, जो esp है। महत्वपूर्ण है जब आप नई टीम के सदस्यों को गति के लिए लाने या स्वचालित निर्माण के लिए एक विरोधाभासी एकीकरण सर्वर का उपयोग करने का प्रयास करते हैं। मैं मेवेन का उपयोग करने की सलाह देता हूं और इसे आपके लिए भारी उठाने देता हूं। एक पोम फ़ाइल बनाएं और एमवीएन ग्रहण के माध्यम से ग्रहण परियोजना उत्पन्न करें: ग्रहण। एचटीएच

+4

प्रत्येक डेवलपर को अपना व्यवहार बदलने के बजाए वर्तमान वर्कफ़्लो अनुकरण करने के लिए अक्सर यह बहुत अच्छा होता है। खासकर जब ग्रहण चींटी से बहुत तेज है। –

2

This question में हेडलेस बिल्ड पर कुछ उपयोगी लिंक शामिल हैं, लेकिन वे ज्यादातर प्लगइन बनाने की दिशा में तैयार हैं। मुझे यकीन नहीं है कि शुद्ध जावा परियोजनाओं में इसे कितना लागू किया जा सकता है।

-5

आम तौर पर ग्रहण केवल जावा फाइलों का निर्माण करता है। यह देखते हुए कि आप .classpath फ़ाइल से क्लासपाथ और .project फ़ाइल से आवश्यक स्रोतों को देखने में सक्षम होना चाहिए और उस पर एक javac करें। यह बहुत आसान होना चाहिए।

+13

यदि यह आसान था, तो इसे आपके उत्तर में शामिल किया जाना चाहिए था! – Kieveli

21

आन्द्रे के जवाब पूरा करने के लिए, एक चींटी समाधान Emacs, JDEE, Ant, and the Eclipse Java Compiler में वर्णित है, के रूप में एक की तरह हो सकता है:

 <javac 
      srcdir="${src}" 
      destdir="${build.dir}/classes"> 
     <compilerarg 
      compiler="org.eclipse.jdt.core.JDTCompilerAdapter" 
      line="-warn:+unused -Xemacs"/> 
     <classpath refid="compile.classpath" /> 
     </javac> 

compilerarg तत्व भी आप ग्रहण संकलक करने के लिए अतिरिक्त कमांड लाइन आर्ग में पारित करने के लिए अनुमति देता है।

आप एक full ant script example here जो होगा साथ एक कमांड लाइन में लागू पा सकते हैं:

java -cp C:/eclipse-SDK-3.4-win32/eclipse/plugins/org.eclipse.equinox.launcher_1.0.100.v20080509-1800.jar org.eclipse.core.launcher.Main -data "C:\Documents and Settings\Administrator\workspace" -application org.eclipse.ant.core.antRunner -buildfile build.xml -verbose 

लेकिन वह सब चींटी शामिल है, जो नहीं है क्या कीथ के बाद है।

एक बैच संकलन के लिए, Compiling Java code का संदर्भ लें विशेष रूप से खंड

बैच संकलक वर्ग जेडीटी कोर प्लग-इन में स्थित है "बैच संकलक का उपयोग करना"। कक्षा का नाम org.eclipse.jdt.compiler.batch है।BatchCompiler। यह प्लगइन्स/org.eclipse.jdt.core_3.4.0..jar में पैक किया गया है। 3.2 के बाद से, यह एक अलग डाउनलोड के रूप में भी उपलब्ध है। फ़ाइल का नाम ecj.jar है।
3.3 के बाद से, इस जार में jsr199 (कंपाइलर एपीआई) और जेएसआर 26 9 (एनोटेशन प्रसंस्करण) के लिए समर्थन भी शामिल है। एनोटेशन प्रोसेसिंग सपोर्ट का उपयोग करने के लिए, 1.6 वीएम की आवश्यकता है।

चल रहा कमांड लाइन से बैच संकलक

java -jar org.eclipse.jdt.core_3.4.0<qualifier>.jar -classpath rt.jar A.java 

या देना होगा:

java -jar ecj.jar -classpath rt.jar A.java 

सभी Java संकलन के विकल्प के रूप में अच्छी तरह से उस अनुभाग में विस्तृत कर रहे हैं।

दृश्य स्टूडियो कमांड लाइन संकलन की सुविधा के साथ अंतर यह है कि ग्रहण सीधे एक कमांड लाइन तर्क में अपनी .project और .classpath पढ़ने के लिए प्रतीत नहीं होता है। आपको बहुत ही संकलन परिणाम प्राप्त करने के लिए विभिन्न कमांड लाइन विकल्पों में .project और .classpath में निहित सभी जानकारी की रिपोर्ट करनी होगी।

तो, संक्षिप्त जवाब यह है: "हाँ, ग्रहण करता है।" ;)

+2

एंटी 4eclipse प्रोजेक्ट का उपयोग करके एक्लिप्स परियोजना के साथ वर्कस्पेस को संकलित करना संभव है, लेकिन इसे बहुत अधिक कोहनी ग्रीस की आवश्यकता है क्योंकि आपको निकालने वाली मेटा जानकारी के आधार पर मैन्युअल रूप से सभी आवश्यक चरणों को करने की आवश्यकता है। मैंने इसे अपने इनहाउस परियोजनाओं के लिए किया है, लेकिन जब तक आपको वास्तव में आवश्यकता नहीं है तब तक मैं इसकी अनुशंसा नहीं करता! हमने किया :- डी –

+0

@ थोरबोजर्न रावण एंडर्सन: इस प्रतिक्रिया के लिए धन्यवाद।आप यहां शामिल "कोहनी ग्रीस" के प्रकार को चित्रित करने वाले इस धागे में एक उत्तर भी पोस्ट कर सकते हैं;) – VonC

+0

अच्छी तरह से, मैंने एंटी 4eclipse के आधार पर एक साथ हैक किया - जिसके लिए प्रोजेक्टसेट.एसपीएफ फ़ाइल की आवश्यकता है - "निर्यात रननेबल जार" कार्यक्षमता अनुकरण करने के लिए इसलिए कोई जवाब नहीं है। इसके अलावा, यह ग्रहण नहीं चला रहा है, लेकिन चींटी का उपयोग कर ग्रहण अनुकरण: डी –

-3

संक्षिप्त उत्तर। सं। ग्रहण में प्रोजेक्ट बनाने के लिए विजुअल स्टूडियो जैसे कमांड लाइन स्विच नहीं है।

+3

संक्षिप्त उत्तर: हाँ। ग्रहण करता है। सिवाय इसके कि आपको विभिन्न कमांड लाइन विकल्पों में प्रोजेक्ट और .classpath में निहित सभी जानकारी की रिपोर्ट करना है – VonC

+0

बाहरी (ग्रहण करने के लिए) एंटी या मैवेन जैसे समाधानों का निर्माण आमतौर पर अन्य प्रतिक्रियाओं में उल्लेख किया गया है। –

0

हाय वॉनसी टिप्पणियों के अलावा बस। मैं अपनी परियोजना संकलित करने के लिए ecj संकलक का उपयोग कर रहा हूँ। यह निष्कासन फेंक रहा था कि कुछ कक्षाएं नहीं मिलीं। लेकिन परियोजना जावैक कंपाइलर के साथ जुड़ा हुआ था।

तो बस मैं classpath में वर्गों (जो हम तर्क के रूप में पारित करने के लिए है) और अब इसके ठीक काम कर रहा ... :)

कुलबीर जोड़ा सिंह

5

27 वर्षों के बाद, मैं भी एक आईडीई में असहज विकास कर रहा हूं।मैंने इन सुझावों (उपरोक्त) की कोशिश की - और संभवत: बस सब कुछ ठीक से नहीं किया - इसलिए मैंने एक वेब-सर्च किया और पाया कि 'http://incise.org/android-development-on-the-command-line.html' पर मेरे लिए क्या काम किया।

उत्तर उपरोक्त सभी उत्तरों का संयोजन प्रतीत होता है (कृपया मुझे बताएं कि क्या मैं गलत हूं और यदि माफी माँगता हूं)।

जैसा ऊपर बताया गया है, ग्रहण/एडीटी आवश्यक चींटी फाइलें नहीं बनाता है। आदेश ग्रहण आईडीई के बिना संकलित करने के लिए (चींटी स्क्रिप्ट बनाने के बिना और) में:

1) अपने शीर्ष स्तर की निर्देशिका में build.xml जनरेट करें:

android list targets (to get target id used below) 

android update project --target target_id --name project_name --path top_level_directory 

    ** my sample project had a target_id of 1 and a project name of 't1', and 
    I am building from the top level directory of project 
    my command line looks like android update project --target 1 --name t1 --path `pwd` 

2) अगला मैं परियोजना संकलन। मैं 'चींटी' का उपयोग न करने के अनुरोध से थोड़ा उलझन में था। उम्मीद है - अनुरोधकर्ता का मतलब था कि वह किसी भी चींटी स्क्रिप्ट लिखना नहीं चाहता था। मैं कहता हूँ इस वजह अगले कदम चींटी

ant target 

    this confused me a little bit, because i thought they were talking about the 
    android device, but they're not. It's the mode (debug/release) 
    my command line looks like ant debug 

3 का प्रयोग करके) apk डिवाइस पर मैं फिर से चींटी का इस्तेमाल किया था स्थापित करने के लिए आवेदन संकलित करने के लिए है:

ant target install 

    ** my command line looked like ant debug install 

4) को चलाने के लिए मेरे एंड्रॉइड फोन पर प्रोजेक्ट मैं एडीबी का उपयोग करता हूं।

adb shell 'am start -n your.project.name/.activity' 

    ** Again there was some confusion as to what exactly I had to use for project 
    My command line looked like adb shell 'am start -n com.example.t1/.MainActivity' 
    I also found that if you type 'adb shell' you get put to a cli shell interface 
    where you can do just about anything from there. 

3 ए) एक ओर ध्यान दें:

adb logcat 

3 बी) एक दूसरा पक्ष टिप्पणी: लिंक भी आदेश से पूरी परियोजना के निर्माण के लिए निर्देश शामिल हैं जैसा कि ऊपर उल्लेख डिवाइस उपयोग से लॉग को देखने के लिए ।

उम्मीद है कि यह प्रश्न के साथ मदद करेगा। मुझे पता है कि इस विषय के बारे में कुछ भी खोजने में मुझे बहुत खुशी हुई।

+1

देखें यदि प्रोजेक्ट पहले ही बनाया गया है (डीबग मोड f.ex. में।) आप इमारत के बिना स्थापित करने के लिए 'चींटी installd' का उपयोग कर सकते हैं –

1

बस मेरे दो सेंट जोड़ना चाहता था। मैं कर रहा करने की कोशिश की के रूप में @Kieveli गैर Win32 के लिए सुझाव (नीचे दोहराया) लेकिन यह (ग्रहण के साथ CentOS पर: लूना): मेरे लिए काम नहीं किया ग्रहण (लूना) का उपयोग कर CentOS पर

java -cp startup.jar -noSplash -data "D:\Source\MyProject\workspace" -application org.eclipse.jdt.apt.core.aptBuild 

मेरी विशेष सेटअप पर इस काम:

$ECLIPSE_HOME/eclipse -nosplash -application org.eclipse.jdt.apt.core.aptBuild startup.jar -data ~/workspace 

उत्पादन कुछ इस तरह दिखना चाहिए:

Building workspace 
Building '/RemoteSystemsTempFiles' 
Building '/test' 
Invoking 'Java Builder' on '/test'. 
Cleaning output folder for test 
Build done 
Building workspace 
Building '/RemoteSystemsTempFiles' 
Building '/test' 
Invoking 'Java Builder' on '/test'. 
Preparing to build test 
Cleaning output folder for test 
Copying resources to the output folder 
Analyzing sources 
Compiling test/src/com/company/test/tool 
Build done 

काफी यकीन नहीं क्यों यह जाहिरा तौर पर यह दो बार किया था, लेकिन यह काम करने के लिए लगता है।