النمل بناء البرامج النصية، antcall، التبعيات، الخ

StackOverflow https://stackoverflow.com/questions/8790

  •  08-06-2019
  •  | 
  •  

سؤال

لدي برنامج نصي للبناء وكجزء من هذا البرنامج النصي يقوم بنسخ ملف jar إلى دليل، ولتسهيل تسميته بـ utils jar.تم إنشاء جرة الأدوات بواسطة برنامج نصي بناء آخر موجود في دليل آخر.ما أحاول فعله هو أن يقوم برنامج البناء الخاص بي بتشغيل البرنامج النصي لبناء الأدوات حتى أتمكن من التأكد من تحديث جرة الأدوات.

لذلك أعلم أنني بحاجة إلى استيراد ملف بناء الأدوات.

<import file="../utils/build/build.xml" />

وهو ما لا يعمل لأن مهمة الاستيراد، على عكس كل مهام النمل الأخرى تقريبًا، لا تعمل من الأساس، بل يتم تشغيلها من الأشخاص ذوي الإعاقة.لذا، للتغلب على ذلك، لدي هذه الأغنية الصغيرة، والتي نجحت في استيراد ملف البناء

  <property name="baseDirUpOne" location=".." />
  <import file="${baseDirUpOne}/utils/build/build.xml" />

والآن بعد أن قمت بحل مشكلة الاستيراد الخاصة بي، أحتاج إلى استدعاء المهمة، حسنًا، يجب أن يكون ذلك سهلاً:

<antcall target="utils.package" />

لاحظ أنه في ما سبق، utils هو اسم المشروع ../utils/build/build.xml

المشكلة التي أواجهها الآن هي أن استدعاء النمل لا يتم تنفيذه في ../utils/build لذا فإن ما أحتاجه، ولا أستطيع العثور عليه، هو خاصية runat أو شيء مشابه، بشكل أساسي:

<antcall target="utils.package" runat="../utils/build" />

السبب وراء حاجتي لذلك هو أنه في ملف إنشاء الأدوات المساعدة الخاص بي، تعتمد خطوة تحديد الكود الذي سيتم نسخه إلى الجرة على المسارات النسبية لتجنب مسارات الترميز الثابت في ملف النمل الخاص بي.أيه أفكار؟

هل كانت مفيدة؟

المحلول

لدي شيء مماثل الإعداد:لدي ملف Ant build.xml الرئيسي الذي يستدعي ملف build.xml المنفصل الذي يعتني ببناء اختباراتي.هذه هي الطريقة التي أفعل ذلك:

<target name="build-tests">
    <subant target="build">
      <fileset dir="${test.home}" includes="build.xml"/>
    </subant>
</target>

الحيلة هي الاستخدام subant بدلاً من antcall.ليس عليك استيراد ملف البناء الآخر.

نصائح أخرى

حاول استخدام مهمة "النمل". بدلاً من مهمة "antcall"، التي تقوم بتشغيل البنية المستوردة مباشرة بدلاً من استيرادها إلى ملف البناء الحالي.يحتوي على معلمة "dir":

الدليل لاستخدامه باعتباره مؤسسة لمشروع ANT الجديد.الإعدادات الافتراضية إلى قائم على المشروع الحالي ، ما لم يتم ضبط RerniTall على False ، وفي هذه الحالة لا يكون لها قيمة افتراضية.سيؤدي ذلك إلى تجاوز الإعداد المستند للمشروع المسمى.

لذلك يمكنك القيام بما يلي:

<ant antfile="${baseDirUpOne}/utils/build/build.xml" dir="../utils/build" />

أو شيء من هذا القبيل.

يمكنك تمرير المعلمات إلى antcall باستخدام المتداخلة في كتلة antcall.لذلك، يمكنك تمرير الخصائص بهذه الطريقة (وربما حتى على أساسها لأن الخصائص غير قابلة للتغيير).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top