कमांड लाइन से एक्लिप्स जावा प्रोजेक्ट बनाएँ


118

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

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

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


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

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

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

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

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

जवाबों:


61

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

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

अपडेट करें

कई साल पहले ग्रहण startup.jar"विषुव लांचर" के साथ बदल दिया गया

https://wiki.eclipse.org/Equinox_Launcher

ग्रहण मंगल पर (MacOX):

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पैरामीटर अपने कार्यक्षेत्र का स्थान निर्दिष्ट करता है।

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


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

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

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

2
आप बिल्ड परिणाम कैसे देखते हैं? मैंने यह कोशिश की है, और आउटपुट मिला: "बिल्डिंग वर्कस्पेस", लेकिन मुझे यह संकेत नहीं मिला कि बिल्ड सफल हुआ या असफल।
दिक्ला

आप कमांड लाइन चींटी स्क्रिप्ट के माध्यम से अपना कार्यक्षेत्र भी बना सकते हैं। देखें help.eclipse.org/indigo/...
reprogrammer

22

एंड्रे के जवाब को पूरा करने के लिए, एक एंट सॉल्यूशन Emacs, JDEE, Ant, और एक्लिप्स जावा कंपाइलर में वर्णित के समान हो सकता है:

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

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

आप यहां एक पूरी चीफ स्क्रिप्ट का उदाहरण पा सकते हैं, जिसे एक कमांड लाइन में आमंत्रित किया जाएगा :

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

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

बैच संकलन के लिए, कृपया संकलित जावा कोड , विशेष रूप से अनुभाग " बैच संकलक का उपयोग करना " देखें

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

सभी जावा संकलन विकल्प उस खंड में भी विस्तृत हैं।

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

तो, संक्षिप्त उत्तर है: "हाँ, ग्रहण इस तरह का है।" ;)


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

@ Thorbjørn रावन एंडरसन: इस प्रतिक्रिया के लिए धन्यवाद। आप इस धागे में एक उत्तर भी दे सकते हैं जिसमें "कोहनी ग्रीस" की तरह दिखाया गया है;)
वॉन

ठीक है, जो मैंने एंटेक्लिप्स के आधार पर एक साथ हैक किया था - जिसके लिए एक प्रोजेक्टसैट.प्सफ फाइल की आवश्यकता होती है - "एक्सपोर्ट रनएबल जार" कार्यक्षमता का अनुकरण करने के लिए, इसलिए कोई जवाब नहीं है। इसके अलावा, यह ग्रहण नहीं चल रहा है, लेकिन चींटी का उपयोग करके ग्रहण का अनुकरण कर रहा है: D
Thorbjørn Ravn Andersen

इस पुराने उत्तर पर आया: हमने पाया कि "एक्लिप्स बिल्ड का उपयोग करके ग्रहण कॉन्फ़िगरेशन फ़ाइलों का उपयोग करना" लंबे समय में बहुत भंगुर होगा और मैं दृढ़ता से दूसरों को इस तरह से न जाने की सलाह दूंगा। इसके बजाय मावेन परियोजनाओं का उपयोग करें।
थोरबजोरन रावन एंडरसन

1
@JeffPuckettII धन्यवाद। मैंने लिंक को पुनर्स्थापित कर दिया है।
VONC

8

27 साल बाद, मैं भी एक आईडीई में विकसित होने में असहज हूं। मैंने इन सुझावों की कोशिश की (ऊपर) - और शायद अभी सब कुछ सही नहीं हुआ है - इसलिए मैंने एक वेब-खोज की और पाया कि मेरे लिए क्या काम किया है ' http://incise.org/android-development-on-the- कमांड-लाइन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) डिवाइस पर एपीके को स्थापित करने के लिए मुझे फिर से चींटी का उपयोग करना पड़ा:

 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. में) तो आप ant installdभवन के बिना स्थापित करने के लिए उपयोग कर सकते हैं
सर्व-इंक

4

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


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

2

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


1

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

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

ग्रहण (Luna) का उपयोग करते हुए CentOS पर मेरे विशेष सेटअप पर यह काम किया:

$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

यह निश्चित रूप से स्पष्ट नहीं है कि यह स्पष्ट रूप से दो बार क्यों हुआ, लेकिन यह काम करने लगता है।


0

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

तो बस मैंने कक्षाओं को क्लासपाथ में जोड़ दिया (जिसे हमें तर्क के रूप में पारित करना है) और अब इसका काम ठीक है ... :)

कुलबीर सिंह


-3

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


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

बाहरी (एक्लिप्स के लिए) चींटी या मावेन जैसे समाधानों का उपयोग आमतौर पर इसके लिए किया जाता है, जैसा कि अन्य प्रतिक्रियाओं में नोट किया गया है।
जेआर लॉरॉर्न
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.