ชุดตัวอย่างของการใช้ ANT เพื่อสร้างแอพ/เกม Flash โดยอัตโนมัติ มันหมายถึงการเป็นหนังสือทำอาหารหรือทรัพยากรการเรียนรู้ดังนั้นแต่ละตัวอย่างมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้และควรอธิบายตัวเอง
สร้างการรวมอย่างต่อเนื่องของคุณให้พร้อม!
ตอนแรกคุณต้องติดตั้ง JRE (สภาพแวดล้อม Java Runtime) หากต้องการตรวจสอบทุกอย่างทำงานตามที่คาดไว้เพียงพิมพ์ $ 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 คุณสามารถค้นหาไดเรกทอรี SDKS Flex ที่ <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 ที่เชื่อมโยงกัน เราต้องบอกกับคอมพ์ว่าจะหาได้ที่ไหน:
<? 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 คุณสามารถค้นหา debuggers playerglobal.swc และแฟลชผู้เล่นทั้งหมดได้ที่ http://helpx.adobe.com/flash-player/kb/archived-flash-player-versions.html
| รุ่น SWF | ผู้เล่นเป้าหมาย |
|---|---|
| 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 ... 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 และอัปเดตไฟล์. 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 >
...งานนี้ได้รับใบอนุญาตภายใต้ใบอนุญาต International Creative Commons Noncommercial 4.0 International