আমি নিম্নলিখিত সতর্কতা পেয়েছি:
[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
একাধিকবার-টাস্ক ব্যবহার PreSetDef
করতে হয় তবে আপনি নিজের- javac
টাস্ক যা সর্বদা সেট করে তা সংজ্ঞায়িত করতে ব্যবহার করতে বিবেচনা করতে পারেন includeantruntime="false"
।
Http://www.coderanch.com/t/503097/tools/warning-includantruntime-was-not-set থেকে :
এটি এন্টি ১.৮ এ প্রবর্তিত একটি ভুল ধারণা দ্বারা সৃষ্ট। জাভাক টাস্কে কেবল সেই নামের একটি বৈশিষ্ট্য যুক্ত করুন, এটি মিথ্যাতে সেট করুন, এবং ভুলে যা কখনও ঘটেছিল।
Http://ant.apache.org/manual/Tasks/javac.html থেকে :
অ্যান্ট রান-টাইম লাইব্রেরিগুলি ক্লাসপথে অন্তর্ভুক্ত করা উচিত; হ্যাঁ ডিফল্ট, যদি না build.sysclasspath সেট করা থাকে। সাধারণত এটি মিথ্যা হিসাবে সেট করা ভাল তবে স্ক্রিপ্টটির আচরণ যে পরিবেশে এটি চালিত হয় তার সংবেদনশীল না।
@ ড্যানিয়েল কুতিক যেমন উল্লেখ করেছেন, presetdef
এটি একটি ভাল বিকল্প। বিশেষত যদি কেউ এমন অনেকগুলি build.xml
ফাইল নিয়ে একটি প্রকল্পে কাজ করে যা সম্পাদনা করতে পারে না বা পছন্দ না করে (যেমন তৃতীয় পক্ষের from
ব্যবহার করতে 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
টাস্কটি সংজ্ঞায়িত করতে হয়েছে , তাই আমি শীর্ষ-স্তরে যা সেট করেছি তা তারা ওভাররাইড করে।
চেট হোসি এখানে একটি সুন্দর ব্যাখ্যা লিখেছেন :
Icallyতিহাসিকভাবে, পিঁপড়া সর্বদা জাভাক টাস্কের জন্য উপলব্ধ ক্লাসপথে নিজের রানটাইম অন্তর্ভুক্ত করে। সুতরাং পিঁপড়ার সাথে অন্তর্ভুক্ত যে কোনও গ্রন্থাগার এবং পিঁপড়ার কাছে উপলভ্য যে কোনও গ্রন্থাগারগুলি আপনার বিল্ডের ক্লাসপথে আপনি পছন্দ করেন বা না চান তা স্বয়ংক্রিয়ভাবে আসে।
সিদ্ধান্ত নেওয়া হয়েছিল যে এটি সম্ভবত বেশিরভাগ লোকেরা চেয়েছিলেন। সুতরাং এখন এটির জন্য একটি বিকল্প আছে।
আপনি যদি "সত্য" চয়ন করেন (অন্তর্ভুক্তিকালীন সময়ের জন্য), তবে কমপক্ষে আপনি জানেন যে আপনার বিল্ড ক্লাসপাথে পিপড়া রানটাইম অন্তর্ভুক্ত থাকবে। আপনি যদি "মিথ্যা" চয়ন করেন তবে আপনি এই সত্যটি গ্রহণ করছেন যে বিল্ড আচরণটি পুরানো সংস্করণ এবং 1.8+ এর মধ্যে পরিবর্তিত হবে।
আপনি এই সতর্কতাটি দেখতে যতটা বিরক্ত হয়েছেন, আপনার বিল্ডগুলি সম্পূর্ণরূপে ভেঙে গেলে আপনি আরও কম খুশি হবেন। এই ডিফল্ট আচরণটি অমান্যকৃত বিল্ড ফাইলগুলিকে পিঁপড়ার সংস্করণগুলির মধ্যে নিয়মিত কাজ করার অনুমতি দেয়।
ড্যানিয়েল থেকে উত্তর ঠিক নিখুঁত কাজ করে। এখানে আমি আমার বিল্ড.এক্সএমএলে একটি নমুনা স্নিপেট যুক্ত করেছি:
<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"/>
আপনার বিল্ড.এক্সএমএল ফাইলটিতে ব্যবহার করুন
আরো বিস্তারিত জানার জন্য অনুসন্ধান includeAntRuntime
মধ্যে অ্যান্ট javac
আমি এটির মুখোমুখি হয়েছি, আমি প্রোগ্রাম এবং বৈশিষ্ট্যটি পরীক্ষা করে দেখছি। jdk1.8 এর জন্য একটি আপডেট ইনস্টল করা আছে যা গ্রহণে পিঁপড়ার জন্য আমার পুরানো সেটিং (jdk1.6.0) সাথে সামঞ্জস্যপূর্ণ নয়। আমি সেই আপডেটটি ইনস্টল করেছি। এই মুহুর্তে, আমার পিঁপড়া প্রকল্পটি সাফল্য বাড়িয়ে তুলছে।
এটি চেষ্টা করুন, আশা করি এটি সহায়ক হবে।