مجموعة من الأمثلة على استخدام ANT لأتمتة بناء تطبيقات/ألعاب فلاش. من المفترض أن يكون كتابًا للطبخ أو مورد تعليمي ، وبالتالي فإن كل مثال صغير قدر الإمكان ويجب أن يكون وصفًا ذاتيًا.
اجعل بناء التكامل المستمر جاهزًا!
في البداية ، يجب عليك تثبيت JRE (Java Runtime Environment). للتحقق من كل شيء يعمل كما هو متوقع ، ما عليك سوى اكتب $ java إلى المحطة الخاصة بك.
ثم عليك تنزيل ANT من http://ant.apache.org/bindownload.cgi. ما عليك سوى استخراج ملف .zip الذي تم تنزيله في الدليل ~/sdks/ant ، وتعيين متغير بيئة ANT_HOME إلى هذا الموقع وإضافة ANT_HOME إلى PATH :
${ANT_HOME}/bin (macOS) أو %ANT_HOME%/bin (Windows)
للتحقق من كل شيء يعمل كما هو متوقع ، فقط اكتب $ ant إلى محطةك.
إذا كنت تستخدم MacOS ، فيمكنك تثبيت ANT مع Brew:
$ brew install ant
إذا كنت تستخدم Adobe Flash Builder 4.7 ، فيمكنك العثور على AIR SDK AT /Applications/Adobe Flash Builder 4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722 (macos C:Program Files (x86)AdobeAdobe Flash Builder 4.7eclipsepluginscom.adobe.flash.compiler_4.7.0.349722 (Windows).
خلاف ذلك ، يمكنك تنزيله من http://www.adobe.com/devnet/air/air-sdk-download.html. ما عليك سوى استخراجه في الدليل ، دعنا نقول ~/sdks/air .
إذا كنت تستخدم Adobe Flash Builder 4.7 ، فيمكنك العثور على دليل Flex SDKs على <FlashBuilder_installation_location>/sdks .
خلاف ذلك ، يجب عليك تنزيله وتثبيته يدويًا. أنا شخصياً أفضل الإصدار بواسطة Adobe ، والذي يمكن تنزيله من http://www.adobe.com/devnet/flex/flex-sdk-download.html. ما عليك سوى استخراجه في الدليل ، دعنا نقول ~/sdks/flex . ولكن قد ترغب في استخدام أحدث إصدار من Flex SDK ، والذي تم تطويره حاليًا بواسطة Apache. إذا كان الأمر كذلك ، يمكنك تثبيته باستخدام http://flex.apache.org/installer.html.
يجب عليك تعيين متغير بيئة FLEX_HOME وإضافته إلى PATH .
يمكنك استخدام برنامج التحويل البرمجي لتجميع ملفات SWF من ملفات مصدر ActionScript و/أو MXML.
يمكنك استخدام برنامج التحويل البرمجي المكون لإنشاء ملف SWC من ملفات مصدر المكون وملفات الأصول الأخرى مثل الصور وأوراق النمط.
يمكنك تجميع أصول ActionScript و MXML لتطبيق الهواء الخاص بك مع برنامج التحويل البرمجي MXML سطر الأوامر (AMXMLC).
استخدم برنامج التحويل البرمجي المكون ، ACOMPC ، لتجميع مكتبات الهواء والمكونات المستقلة.
ASDOC هي أداة سطر الأوامر يمكنك استخدامها لإنشاء وثائق مرجعية لغة API كصفحات HTML من فئات ActionScript وملفات MXML.
أداة مطور الهواء هي أداة لخط الأوامر متعدد الأغراض لتطوير التطبيقات الجوية. يمكنك استخدام ADT لأداء المهام التالية:
استخدم قاذفة Air Debug لتشغيل كل من التطبيقات المستندة إلى SWF و HTML أثناء التطوير. باستخدام ADL ، يمكنك تشغيل تطبيق دون العبوة الأولى وتثبيته. بشكل افتراضي ، يستخدم ADL وقت تشغيل مضمن مع SDK ، مما يعني أنه لا يتعين عليك تثبيت وقت التشغيل بشكل منفصل لاستخدام ADL.
ملف ant build.xml الأكثر بساطة ، والذي يصف كيفية إنشاء ملف bin/output.swc :
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
</ compc >
</ target >
</ project > دعنا نقول ، أن المشروع يحتوي على دليل libs مع مكتبات .SWC المرتبطة. علينا أن نقول إلى compc أين نجدهم:
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
</ compc >
</ target >
</ project >أو إذا أردنا تحديد ملف .swc الموجود في أي مكان:
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
< library-path file = " lib.swc " append = " true " />
</ compc >
</ target >
</ project >نحن الآن نستخدم بيانات التعريف المخصصة ونريد الاحتفاظ بها في التطبيق المترجم (السلوك الافتراضي هو أنه يتم إزالتها للحفاظ على التطبيق/المكتبة أصغر قدر الإمكان):
<? xml version = " 1.0 " ?>
< project name = " swc example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< compc output = " ${DEPLOY.dir}/output.swc " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
< include-sources dir = " ${basedir}/src " includes = " * " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
< keep-as3-metadata name = " Inject " />
< keep-as3-metadata name = " PostConstruct " />
< keep-as3-metadata name = " ArrayElementType " />
</ compc >
</ target >
</ project >< compc ... target-player = " 11.4 " swf-version = " 17 " /> لا تنس التحقق مما إذا كان FLEX_HOME/frameworks/libs/player/<target-version>/playerglobal.swc و ${FLEX_HOME}/runtimes/player/<target-version>/.../FlashPlayerDebugger موجودة. يمكنك العثور على جميع الإصدارات التي تم إصدارها من Defugers Playerglobal.swc و Flash Player على http://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.html.
| SWF-version | لاعب الهدف |
|---|---|
| 9 | 9 |
| 10 | 10.0 ، 10.1 |
| 11 | 10.2 |
| 12 | 10.3 |
| 13 | 11.0 |
| 14 | 11.1 |
| 15 | 11.2 |
| 16 | 11.3 |
| 17 | 11.4 |
| 18 | 11.5 |
| 19 | 11.6 |
| 20 | 11.7 |
| 21 | 11.8 |
| 22 | 11.9 |
| 23 | 12.0 |
| 24 | 13.0 |
| 25 | 14.0 |
| 26 | 15.0 |
| 27 | 16.0 |
لنلقي نظرة على خيارات COMPC. إذا كنت مهتمًا بمزيد من المعلومات التفصيلية ، فيمكنك التخلص من التكوين وتقرير الحجم وتقرير الارتباط:
< compc ... dump-config = " ${DEPLOY.dir}/config.xml " size-report = " ${DEPLOY.dir}/sizereport.xml " link-report = " ${DEPLOY.dir}/linkreport.xml " >لتعطيل التحذيرات:
< compc ... warnings = " false " >إذا كنت تقوم ببناء الكثير من التطبيقات/المكتبات ، فيمكنك استنفاد الذاكرة. يتم تعيين خيار شوكة مفيد للغاية ، والذي يجب حله ، خاصة مع ضبط MaxMemory على أزعج واحد على الأقل ، كل شيء:
< compc ... fork = " true " > ملف ant build.xml الأكثر بساطة ، والذي يصف كيفية إنشاء ملف bin/output.swf :
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.mxml " output = " ${DEPLOY.dir}/output.swf " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
</ mxmlc >
</ target >
</ project >يوفر برنامج التحويل البرمجي MXMLC نفس الخيارات تقريبًا مثل برنامج التحويل البرمجي CompC. يمكن تغيير كل مثال موضح في قسم SWC بسهولة إلى أمر MXMLC. قارن مثال 1 مع المثال 9 وسترى.
ملف ant build.xml الأكثر بساطة ، والذي يصف كيفية إنشاء ملف bin/output.swf :
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< mxmlc
file= " ${basedir}/src/Main.as "
output= " ${DEPLOY.dir}/output.swf "
static-link-runtime-shared-libraries= " true "
failonerror= " true "
maxmemory= " 1024m " >
< source-path path-element = " ${basedir}/src " />
< source-path path-element = " ${FLEX_HOME}/frameworks " />
</ mxmlc >
</ target >
</ project >يوفر برنامج التحويل البرمجي MXMLC نفس الخيارات تقريبًا مثل برنامج التحويل البرمجي CompC. يمكن تغيير كل مثال موضح في قسم SWC بسهولة إلى أمر MXMLC. قارن مثال 1 مع المثال 10 وسترى.
ملف ant build.xml الأكثر بساطة ، والذي يصف كيفية إنشاء ملف bin/output.swf :
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< target name = " main " depends = " clean, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.as " output = " ${DEPLOY.dir>/output.swf " configname = " air " failonerror = " true " >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs " />
</ library-path >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs/air " />
</ library-path >
</ mxmlc >
</ target >
</ project >يوفر برنامج التحويل البرمجي MXMLC نفس الخيارات تقريبًا مثل برنامج التحويل البرمجي CompC. يمكن تغيير كل مثال موضح في قسم SWC بسهولة إلى أمر MXMLC. قارن مثال 1 مع المثال 11 وسترى.
روابط التنزيل السريع: Apache Flexunit 4.2 ، Flexunit 4.1
لا تنس إضافة
CIListenerإلى مثيلFlexUnitCoreالخاص بك.
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< taskdef resource = " flexUnitTasks.tasks " >
< classpath >
< fileset dir = " <path_to_flex_unit_ant_tasks_dir> " >
< include name = " flexUnitTasks*.jar " />
</ fileset >
</ classpath >
</ taskdef >
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< property name = " TESTS.dir " value = " ${basedir}/tests-output " />
< target name = " main " depends = " clean, tests, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
< delete dir = " ${TESTS.dir} " />
< mkdir dir = " ${TESTS.dir} " />
</ target >
< target name = " tests " >
< mxmlc file = " ${basedir}/src/tests.mxml " output = " ${TESTS.dir}/tests.swf " failonerror = " true " verbose-stacktraces = " true " >
< source-path path-element = " ${basedir}/src " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
</ mxmlc >
< flexunit
swf= " ${TESTS.dir}/tests.swf "
toDir= " ${TESTS.dir} "
haltonfailure= " false " failureproperty = " flexunit.failure "
verbose= " true "
localTrusted= " true "
command= " ${FLEX_HOME}/runtimes/player/11.4/win/FlashPlayerDebugger.exe " />
< junitreport todir = " ${TESTS.dir} " >
< fileset dir = " ${TESTS.dir} " >
< include name = " TEST-*.xml " />
</ fileset >
< report format = " frames " todir = " ${TESTS.dir}/html " />
</ junitreport >
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.mxml " output = " ${DEPLOY.dir}/output.swf " failonerror = " true " maxmemory = " 1024m " >
< source-path path-element = " ${basedir}/src " />
</ mxmlc >
</ target >
</ project >لا تنس إضافة
AIRCIListenerإلى مثيلFlexUnitCoreالخاص بك.
<? xml version = " 1.0 " ?>
< project name = " swf example " default = " main " basedir = " . " >
< taskdef resource = " flexTasks.tasks " classpath = " ${FLEX_HOME}/ant " />
< taskdef resource = " flexUnitTasks.tasks " >
< classpath >
< fileset dir = " <path_to_flex_unit_ant_tasks_dir> " >
< include name = " flexUnitTasks*.jar " />
</ fileset >
</ classpath >
</ taskdef >
< property name = " DEPLOY.dir " value = " ${basedir}/bin " />
< property name = " TESTS.dir " value = " ${basedir}/tests-output " />
< target name = " main " depends = " clean, tests, compile " />
< target name = " clean " >
< delete dir = " ${DEPLOY.dir} " />
< mkdir dir = " ${DEPLOY.dir} " />
< delete dir = " ${TESTS.dir} " />
< mkdir dir = " ${TESTS.dir} " />
</ target >
< target name = " test " >
< mxmlc file = " ${basedir}/src/tests.as " output = " ${TESTS.dir}/tests.swf " configname = " air " failonerror = " true " verbose-stacktraces = " true " >
< library-path dir = " ${basedir}/libs " includes= " * " append= " true " />
< library-path dir = " ${FLEX_HOME} " append= " true " >
< include name = " frameworks/libs " />
</ library-path >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs/air " />
</ library-path >
</ mxmlc >
< copy file = " ${basedir}/src/tests-app.xml " todir = " ${TESTS.dir} " overwrite = " true " />
< replace file = " ${TESTS.dir}/tests-app.xml " token = " [This value will be overwritten by Flash Builder in the output app.xml] " value = " tests.swf " />
< flexunit
player= " air "
swf= " ${TESTS.dir}/tests.swf "
toDir= " ${TESTS.dir} "
haltonfailure= " false " failureproperty = " flexunit.failure "
verbose= " true " />
< junitreport todir = " ${TESTS.dir} " >
< fileset dir = " ${TESTS.dir} " >
< include name = " TEST-*.xml " />
</ fileset >
< report format = " frames " todir = " ${TESTS.dir}/html " />
</ junitreport >
</ target >
< target name = " compile " >
< mxmlc file = " ${basedir}/src/Main.as " output = " ${DEPLOY.dir>/output.swf " configname = " air " failonerror = " true " >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs " />
</ library-path >
< library-path dir = " ${FLEX_HOME} " append = " true " >
< include name = " frameworks/libs/air " />
</ library-path >
</ mxmlc >
</ target >
</ project >...
< target name = " pack " >
< copy file = " ${basedir}/src/swf2png-app.xml " todir = " ${DEPLOY.dir} " overwrite = " true " />
< replace file = " ${DEPLOY.dir}/swf2png-app.xml " token = " [This value will be overwritten by Flash Builder in the output app.xml] " value = " swf2png.swf " />
< exec executable = " ${FLEX_HOME}/bin/adt.bat " failonerror = " true " >
< arg line = " -package " />
< arg line = " -storetype pkcs12 " />
< arg line = " -keystore ${basedir}/certificate.p12 " />
< arg line = " -storepass <password> " />
< arg line = " ${DEPLOY.dir}/swf2png.air " />
< arg line = " ${DEPLOY.dir}/swf2png-app.xml " />
< arg line = " -C ${DEPLOY.dir} swf2png.swf " />
</ exec >
</ target >
...قم بإنشاء ASDOC إلى dir temp وتحديث ملف .swc معه.
...
< target name = " asdoc " >
< tempfile property = " temp.dir " destDir = " ${java.io.tmpdir} " prefix = " ${ant.project.name}-doc-xml- " />
< asdoc output = " ${temp.dir} " lenient = " true " failonerror = " true " keep-xml = " true " skip-xsl = " true " fork = " true " >
< compiler .source-path path-element = " ${basedir}/src " />
< doc-sources path-element = " ${basedir}/src " />
</ asdoc >
< zip destfile = " ${DEPLOY.dir}/${ant.project.name}.swc " update = " true " >
< zipfileset dir = " ${temp.dir}/tempdita " prefix = " docs " >
< include name = " *.* " />
< exclude name = " ASDoc_Config.xml " />
< exclude name = " overviews.xml " />
</ zipfileset >
</ zip >
< delete dir = " ${temp.dir} " failonerror = " false " includeEmptyDirs = " true " />
</ target >
...FlexPMD هو محلل رمز المصدر. يجد عيوب البرمجة الشائعة مثل المتغيرات غير المستخدمة ، وكتل الصيد الفارغة ، وإنشاء الكائنات غير الضرورية ، وما إلى ذلك.
لإنشاء pmd_ruleset.xml ، استخدم منشئ قواعد PMD عبر الإنترنت.
رابط تنزيل سريع: Adobe FlexPMD 1.3
...
< property name = " FLEXPMD.dir " value = " ~/sdks/flexpmd " />
< property name = " FLEXPMD.version " value = " 1.3 " />
< taskdef name = " flexPmd "
classname = " com.adobe.ac.pmd.ant.FlexPmdAntTask "
classpath = " ${FLEXPMD.dir}/flex-pmd-ant-task-${FLEXPMD.version}.jar " >
< classpath >
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-ruleset-api-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-ruleset-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-core-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-plugin-utils-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-api-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/pmd-4.2.5.jar " />
< pathelement location = " ${FLEXPMD.dir}/commons-lang-2.4.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-files-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-metrics-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/plexus-utils-1.0.2.jar " />
< pathelement location = " ${flexpmd.libs}/dom4j-1.6.1.jar " />
</ classpath >
</ taskdef >
< taskdef name = " flexCpd "
classname = " com.adobe.ac.cpd.ant.FlexCpdAntTask "
classpath = " ${FLEXPMD.dir}/flex-pmd-cpd-ant-task-${FLEXPMD.version}.jar " >
< classpath >
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-files-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/flex-pmd-cpd-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-plugin-utils-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-api-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/as3-parser-${FLEXPMD.version}.jar " />
< pathelement location = " ${FLEXPMD.dir}/pmd-4.2.5.jar " />
</ classpath >
</ taskdef >
...
< target name = " flexPmd " >
< flexPmd
sourceDirectory = " ${basedir} "
outputDirectory = " ${DEPLOY.dir} "
ruleSet = " ${basedir}/pmd_ruleset.xml " />
</ target >
< target name = " flexCpd " >
< flexCpd
minimumTokenCount = " 50 "
outputFile = " ${DEPLOY.dir}/cpd.xml " >
< fileset dir = " ${basedir} " >
< include name = " **/*.as " />
< include name = " **/*.mxml " />
< exclude name = " vendor/** " />
</ fileset >
</ flexCpd >
</ target >
... لا تكرر نفسك ، استخدم ${ant.project.name} كما يظهر في المثال 15 - إنشاء ASDOC.
عند تشغيل اختبارات FlexUnit الخاصة بك على جهاز CI وفشل أي اختبار ، ينتهي البناء. لكنه ينتهي قبل توليد التقرير ، لذلك لا يمكن تحديث إحصائياتك ولا تعرف أي الاختبار فشل ولماذا. لذلك توفر مهمة Flexunit failureproperty :
...
< target name = " test " >
< mxmlc file = " ${basedir}/src/tests.mxml " output = " ${TESTS.dir}/tests.swf " failonerror = " true " verbose-stacktraces = " true " >
< source-path path-element = " ${basedir}/src " />
< library-path dir = " ${basedir}/libs " includes = " * " append = " true " />
</ mxmlc >
< flexunit
swf= " ${TESTS.dir}/tests.swf "
toDir= " ${TESTS.dir} "
haltonfailure= " false " failureproperty = " flexunit.failure "
verbose= " true "
localTrusted= " true "
command= " ${FLEX_HOME}/runtimes/player/11.4/win/FlashPlayerDebugger.exe " />
< junitreport todir = " ${TESTS.dir} " >
< fileset dir = " ${TESTS.dir} " >
< include name = " TEST-*.xml " />
</ fileset >
< report format = " frames " todir = " ${TESTS.dir}/html " />
</ junitreport >
< fail if = " flexunit.failure " message = " Unit test(s) failed. See reports! " />
</ target >
...هذا العمل مرخص بموجب ترخيص الإسناد الإبداعي المشترك-لا نومبركال 4.0 الدولي