मुझे निम्नलिखित चेतावनी मिली है:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
इसका क्या मतलब है?
मुझे निम्नलिखित चेतावनी मिली है:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
इसका क्या मतलब है?
जवाबों:
बस सेट includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
यदि आपको javac
कई बार -task का उपयोग करना पड़ता है, तो आप PreSetDef
अपने स्वयं के javac
-स्कैप को परिभाषित करने के लिए उपयोग करने पर विचार करना चाह सकते हैं जो हमेशा सेट होता है includeantruntime="false"
।
से http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set :
यह चींटी 1.8 में शुरू की गई मिसफिट के कारण होता है। बस javac टास्क में उस नाम की एक विशेषता जोड़ें, इसे गलत पर सेट करें, और यह भूल जाएं कि यह कभी भी हुआ है।
से http://ant.apache.org/manual/Tasks/javac.html :
क्या क्लास रनथ में चींटी रन-टाइम लाइब्रेरी शामिल करना; जब तक build.sysclasspath को सेट नहीं किया जाता, तब तक हाँ में चूक होती है। आमतौर पर इसे गलत पर सेट करना सबसे अच्छा है, इसलिए स्क्रिप्ट का व्यवहार उस वातावरण के प्रति संवेदनशील नहीं है जिसमें इसे चलाया जाता है।
जैसा कि @ डैनियल कुटिक ने उल्लेख किया है, presetdef
एक अच्छा विकल्प है। खासकर अगर कोई ऐसी परियोजना पर काम कर रहा है जिसमें कई build.xml
फाइलें हैं, जो नहीं कर सकते हैं, या नहीं करना चाहते हैं, तो संपादित करें (उदाहरण के लिए, तीसरे पक्ष के लोग।)
उपयोग करने के लिए presetdef
, अपनी शीर्ष-स्तरीय build.xml
फ़ाइल में इन पंक्तियों को जोड़ें :
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
अब बाद के सभी javac
कार्य अनिवार्य रूप से विरासत में मिलेंगे includeantruntime="false"
। यदि आपकी परियोजनाओं को वास्तव में चींटी रनटाइम लाइब्रेरी की आवश्यकता होती है, तो आप उन्हें अपनी बिल्ड फ़ाइलों या सेट में स्पष्ट रूप से जोड़ सकते हैं includeantruntime="true"
। बाद वाले को चेतावनियों से भी छुटकारा मिल जाएगा।
javac
यदि वांछित है, तो इसके बाद के कार्य अभी भी स्पष्ट रूप से बदल सकते हैं:
<javac destdir="out" includeantruntime="true">
<src path="foo.java" />
<src path="bar.java" />
</javac>
मैं उपयोग करने के खिलाफ सलाह दूंगा ANT_OPTS
। यह काम करता है, लेकिन यह चेतावनी के उद्देश्य को हरा देता है। चेतावनी एक को बताती है कि किसी का निर्माण दूसरे सिस्टम पर अलग तरह से व्यवहार कर सकता है। उपयोग करने ANT_OPTS
से यह और भी अधिक संभव हो जाता है क्योंकि अब हर प्रणाली ANT_OPTS
को उसी तरह से उपयोग करने की आवश्यकता है । इसके अलावा, ANT_OPTS
आपके सभी प्रोजेक्ट्स में विश्व स्तर पर चेतावनियों को दबाने वाली विली-नीली लागू होगी
presetdef
गैर-निर्मित चींटी कार्यों में काम करने के लिए एक समान चाल बनाई जा सकती है? मैंने इसके साथ कोशिश की है scalac
, लेकिन क्योंकि निचले-डाउन build.xml
फ़ाइलों को मैन्युअल रूप से scalac
कार्य को परिभाषित करना है, वे जो कुछ भी मैं शीर्ष स्तर पर सेट करता हूं, उसे ओवरराइड करता हूं।
चेत होसे ने यहाँ एक अच्छी व्याख्या लिखी है :
ऐतिहासिक रूप से, चींटी हमेशा अपने स्वयं के रनटाइम को शामिल करती थी जो कि जैवैक टास्क को उपलब्ध कराई गई थी। तो चींटी के साथ शामिल कोई भी पुस्तकालय, और चींटी के लिए उपलब्ध कोई भी पुस्तकालय, आपके निर्माण के वर्गपथ में स्वचालित रूप से होता है चाहे आप इसे पसंद करते हों या नहीं।
यह तय किया गया था कि यह शायद वह नहीं था जो ज्यादातर लोग चाहते थे। तो अब इसके लिए एक विकल्प है।
यदि आप "ट्रूइनट्रूंटाइम" के लिए "सही" चुनते हैं, तो कम से कम आप जानते हैं कि आपके बिल्ड क्लासपाथ में चींटी रनटाइम शामिल होगा। यदि आप "गलत" चुनते हैं, तो आप इस तथ्य को स्वीकार कर रहे हैं कि पुराने संस्करणों और 1.8+ के बीच निर्माण व्यवहार बदल जाएगा।
जैसा कि आप इस चेतावनी को देख कर नाराज हैं, यदि आपके बिल्ड पूरी तरह से टूट जाते हैं, तो आप भी कम खुश होंगे। इस डिफ़ॉल्ट व्यवहार को बनाए रखते हुए चींटी के संस्करणों के बीच लगातार काम करने के लिए अनमॉडिफाइड बिल्ड फ़ाइलों की अनुमति देता है।
डैनियल का जवाब एकदम सही काम करता है। यहाँ एक नमूना स्निपेट है जिसे मैंने अपने build.xml में जोड़ा है:
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
<!-- ^^^^^^^^^^^^^^^^^^^^^^^^^ -->
<classpath>
<path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
<path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
</classpath>
</javac>
</target>
यदि आप मुझे पसंद करते हैं तो कमांडलाइन से काम करें त्वरित उत्तर निष्पादित हो रहा है
export ANT_OPTS=-Dbuild.sysclasspath=ignore
और फिर अपनी चींटी स्क्रिप्ट को फिर से चलाएं।
set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
।
<property name="build.sysclasspath" value="last"/>
अपने build.xml फ़ाइल में उपयोग करें
अधिक जानकारी के लिए खोज includeAntRuntime
में चींटी javac
मैं इसी का सामना करना पड़ा, मैं कार्यक्रम और सुविधा में जाँच करता हूँ। jdk1.8 के लिए एक अद्यतन स्थापित किया गया है जो ग्रहण में चींटी के लिए मेरी पुरानी सेटिंग (jdk1.6.0) के अनुकूल नहीं है। मैं उस अद्यतन को स्थापित करता हूं। अभी, मेरी चींटी परियोजना सफलता का निर्माण कर रही है।
यह कोशिश करो, आशा है कि यह मददगार होगा।