পিঁপড়ে সতর্কতা: "'অন্তর্ভুক্তকালীন' সেট করা হয়নি"


397

আমি নিম্নলিখিত সতর্কতা পেয়েছি:

[javac] build.xml:9: warning: 'includeantruntime' was not set, 
defaulting to build.sysclasspath=last; set to false for repeatable builds

এটার মানে কি?

উত্তর:


388

পিঁপড়া রানটাইম

সহজভাবে সেট করুন 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 সেট করা থাকে। সাধারণত এটি মিথ্যা হিসাবে সেট করা ভাল তবে স্ক্রিপ্টটির আচরণ যে পরিবেশে এটি চালিত হয় তার সংবেদনশীল না।


অ্যাপাচি পিঁপড়া (টিএম) সংস্করণ
1.8.2

সুতরাং আপনার যদি ক্লাসপথে পিঁপড়ার রানটাইম প্রয়োজন হয় তবে এটি হ্যাঁ / সত্য সেট করুন অন্যথায় / মিথ্যাতে সেট করুন। আমার ধারণা আপনার দরকার নেই
ড্যানিয়েল কুটিক

5
+1, দুর্দান্ত উত্তর। আমি কেবল ইচ্ছুক যে প্রতিটা জাভ্যাক কলটি লিটারফিলের পরিবর্তে বিল্টফাইলে অন্য কোথাও একবার সেট করতে পারতাম ...
জোনিক

1
এটি সত্য হিসাবে সেট করা কোনও ক্ষেত্রে এটি কী করে?
লোরেঞ্জো লেরাতে

"এন্টি রান-টাইম লাইব্রেরিগুলি ক্লাসপথে অন্তর্ভুক্ত করা উচিত কিনা; হ্যাঁর ডিফল্ট হ্যাঁ, যদি না বিল্ড.সাইক্লাসপাথ সেট না করা থাকে usually সাধারণত এটি মিথ্যাতে সেট করা ভাল তাই স্ক্রিপ্টটির আচরণ যে পরিবেশে এটি চালিত হয় তার সংবেদনশীল নয়। "
ড্যানিয়েল কুটিক

72

@ ড্যানিয়েল কুতিক যেমন উল্লেখ করেছেন, 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আপনার সমস্ত প্রকল্পে সতর্কতা উইলির-নিলিকে দমন করে বিশ্বব্যাপী প্রয়োগ করা হবে


1
একাধিক জাভাক টাস্ক সহ একটি বিদ্যমান পিঁপড়া বিল্ড ফাইল পুনঃনির্মাণের জন্য দুর্দান্ত কাজ করে। প্রিসেটডিফ উপাদানটি প্রকল্পের উপাদানটির ভিতরে চলে যায়।
স্যাক্সমানম্যান

@jwfearn: presetdefঅন্তর্নির্মিত পিঁপড়া কাজের জন্য একই কৌশল কী তৈরি করা যেতে পারে? আমি এটি দিয়ে চেষ্টা করেছি scalac, তবে নিম্ন-ডাউন build.xmlফাইলগুলিতে ম্যানুয়ালি scalacটাস্কটি সংজ্ঞায়িত করতে হয়েছে , তাই আমি শীর্ষ-স্তরে যা সেট করেছি তা তারা ওভাররাইড করে।
স্টুয়ার্ট গোলোডেটিজ

2
একটি নোট, presetdef ব্যবহার করে একটি পিঁপড়া সতর্কতা যে জাভাক টাস্ক পুনরায় সংজ্ঞায়িত করা হয়েছে কারণ হতে হবে। প্রতিটি জাভ্যাক কার্যে অন্তর্ভুক্তকরণ যুক্ত এড়ানো এড়ায়। আমি সতর্কবাণীটির নিম্নতর দিক সম্পর্কে অবগত নই। তবে এটি এমন লোকেদের পক্ষে কার্যকর হতে পারে যাদের পরিষ্কার প্রয়োজন clean
মিকিজভ

হ্যাঁ প্রিসেটডিফ "টাস্ক জাভাকের পুরানো সংজ্ঞাটিকে ওভাররাইড করার চেষ্টা করছে" দেয়
মাইক জোন্স

62

চেট হোসি এখানে একটি সুন্দর ব্যাখ্যা লিখেছেন :

Icallyতিহাসিকভাবে, পিঁপড়া সর্বদা জাভাক টাস্কের জন্য উপলব্ধ ক্লাসপথে নিজের রানটাইম অন্তর্ভুক্ত করে। সুতরাং পিঁপড়ার সাথে অন্তর্ভুক্ত যে কোনও গ্রন্থাগার এবং পিঁপড়ার কাছে উপলভ্য যে কোনও গ্রন্থাগারগুলি আপনার বিল্ডের ক্লাসপথে আপনি পছন্দ করেন বা না চান তা স্বয়ংক্রিয়ভাবে আসে।

সিদ্ধান্ত নেওয়া হয়েছিল যে এটি সম্ভবত বেশিরভাগ লোকেরা চেয়েছিলেন। সুতরাং এখন এটির জন্য একটি বিকল্প আছে।

আপনি যদি "সত্য" চয়ন করেন (অন্তর্ভুক্তিকালীন সময়ের জন্য), তবে কমপক্ষে আপনি জানেন যে আপনার বিল্ড ক্লাসপাথে পিপড়া রানটাইম অন্তর্ভুক্ত থাকবে। আপনি যদি "মিথ্যা" চয়ন করেন তবে আপনি এই সত্যটি গ্রহণ করছেন যে বিল্ড আচরণটি পুরানো সংস্করণ এবং 1.8+ এর মধ্যে পরিবর্তিত হবে।

আপনি এই সতর্কতাটি দেখতে যতটা বিরক্ত হয়েছেন, আপনার বিল্ডগুলি সম্পূর্ণরূপে ভেঙে গেলে আপনি আরও কম খুশি হবেন। এই ডিফল্ট আচরণটি অমান্যকৃত বিল্ড ফাইলগুলিকে পিঁপড়ার সংস্করণগুলির মধ্যে নিয়মিত কাজ করার অনুমতি দেয়।


3
আমি সর্বদা ভাবতাম এটি এখন পর্যন্ত সবচেয়ে নির্লিপ্ত বৈশিষ্ট্য / বার্তা। কে তাদের কনফিগারেশন পরিচালনার সরঞ্জামে 'পুনরাবৃত্তযোগ্য বিল্ডস' চান? ;)
কর্মকাজে

1
এই উত্তরটি কেবলমাত্র একটি বলে মনে হচ্ছে যা আমাদের সতর্কবার্তাটির অর্থ কী বলে।
ty

26

ড্যানিয়েল থেকে উত্তর ঠিক নিখুঁত কাজ করে। এখানে আমি আমার বিল্ড.এক্সএমএলে একটি নমুনা স্নিপেট যুক্ত করেছি:

<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>

5

আপনি যদি আমাকে কমান্ডলাইন থেকে কাজ করতে চান তবে দ্রুত উত্তরটি কার্যকর করা হচ্ছে

export ANT_OPTS=-Dbuild.sysclasspath=ignore

এবং তারপরে আবার আপনার পিপীলিকার স্ক্রিপ্টটি চালান।


এটি আমাকে অনেক সাহায্য করে । আমি ব্যবহার করছি set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
পল ভার্গাস


-3

আমি এটির মুখোমুখি হয়েছি, আমি প্রোগ্রাম এবং বৈশিষ্ট্যটি পরীক্ষা করে দেখছি। jdk1.8 এর জন্য একটি আপডেট ইনস্টল করা আছে যা গ্রহণে পিঁপড়ার জন্য আমার পুরানো সেটিং (jdk1.6.0) সাথে সামঞ্জস্যপূর্ণ নয়। আমি সেই আপডেটটি ইনস্টল করেছি। এই মুহুর্তে, আমার পিঁপড়া প্রকল্পটি সাফল্য বাড়িয়ে তুলছে।

এটি চেষ্টা করুন, আশা করি এটি সহায়ক হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.