تمرير الهدف النمل إلى ملفات build.xml متعددة في الدلائل

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

  •  03-07-2019
  •  | 
  •  

سؤال

ولدي مشروع مع وحدات متعددة، كل في الدليل الخاص به. كل وحدة لديها قناعاتها ملف النمل محاولاتها (build.xml)

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

<?xml version="1.0"?>
<project name="bridgedb" default="all" basedir=".">
  <target name="all">
    <ant dir="corelib"/>
    <ant dir="tools"/>
    <ant dir="makeGdb"/>
    <ant dir="cytoscape-plugin"/>
  </target>
</project>

والآن لديه كل وحدة أيضا هدفا "نظيفة"، ولذا فإنني إضافة هذه الأسطر:

 <target name="clean">
    <ant dir="corelib" target="clean"/>
    <ant dir="tools" target="clean"/>
    <ant dir="makeGdb" target="clean"/>
    <ant dir="cytoscape-plugin" target="clean"/>
  </target>

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

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

المحلول

لماذا لا تستخدم antcall للدعوة الى الهدف الذي يحيل كل ما تبذلونه من دليل فرعي، وparameterise الهدف ليتم استدعاؤها. منها مثلا.

 <antcall target="doStuffToSubdirs">
    <!-- let's clean -->
    <param name="param1" value="clean"/>
  </antcall>

وبعد ذلك:

<target name="doStuffToSubdirs">
   <ant dir="corelib" target="${param1}"/>
   <ant dir="tools" target="${param1}"/>
    ...etc
</target>

وهكذا وهذا يسمح لك لparameterise المكالمات إلى دليل فرعي الخاص بك. إذا قمت بإضافة subdir جديد، عليك فقط أن أضيف أن subdir إلى الهدف "doStuffToSubdirs" (أود أن تسمية ذلك أيضا!)

نصائح أخرى

ووضع هدف نظيف واحد في commonbuild.xml وفي ملفات الأطفال فقط استيراد build.xml والديك

<import file="${parent.dir}/commonbuild.xml" />

والآن سوف تكون قادرة على استدعاء هدف نظيف في يبني طفلك. يمكنك أيضا تجاوز هذا الهدف عن طريق إنشاء هدف نظيف في أي من طفلك يبني.

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