изграждане на множество проекти и почистване на множество проекти в един файл за изграждане с ANT

Съмнявам се, направих този компилиращ файл, за да създам 3 различни проекта

<?xml version="1.0" encoding="UTF-8"?>
<project name="Trinity" basedir="." default="buildall">

   <target name="project1">
        <ant dir="C:/work/project1"/>
   </target>

   <target name="project2" depends="project1">
        <ant dir="C:/work/project2"/>
   </target>

   <target name="project3" depends="project1, project2">
        <ant dir="C:/work/project3"/>
   </target>

   <target name="buildall" depends="project3"/>

</project>

Това вече работи. Но искам също така да почистя проекта, преди да направя изграждането.

Всъщност искам да постигна това: C:/work/project1 ant clean build C:/work/project2 ant clean build C:/work/project3 ant clean build

Благодаря предварително.

актуализация: Благодарение на бързия отговор от Алекс направих нов build.xml файл със следното. И вярвам, че работи добре, какво мислите?.

<?xml version="1.0" encoding="UTF-8"?>
<project name="Trinity" basedir="." default="buildall">

   <target name="project1">
        <ant dir="C:/work/project1" target="clean"/>
        <ant dir="C:/work/project1" target="build"/>
   </target>

   <target name="project2" depends="project1">
        <ant dir="C:/work/project2" target="clean"/>
        <ant dir="C:/work/project2" target="build"/>
   </target>

   <target name="project3" depends="project1, project2">
        <ant dir="C:/work/project3" target="clean"/>
        <ant dir="C:/work/project3" target="build"/>
   </target>

   <target name="buildall" depends="project3"/>

</project>

Благодаря.


person Juano7894    schedule 21.03.2012    source източник
comment
Спри се! Наистина ли имате три проекта? Ако е така, тогава използвайте Ivy, за да ги управлявате като отделни проекти и изхвърлете своя родителски компилационен файл. Ако не, тогава имайте само един файл за компилация за трите части на вашия един проект (build-doctor.com/2008/03/19/)   -  person Tom Howard    schedule 22.03.2012


Отговори (1)


Съгласно задачата за мравка, можете да посочите целите на външните компилирани файлове за мравка

<ant dir="C:/work/project1" target="clean build">

Редактиране:

Според документацията на мравките:

Можете да посочите множество цели, като използвате вложени елементи, вместо да използвате атрибута target. Те ще бъдат изпълнени, сякаш Ant е бил извикан с една цел, чиито зависимости са така посочените цели, в указания ред.

Така че можете да изброите множество цели по следния начин:

<ant dir="C:/work/project1">
    <target name="clean" />
    <target name="build" />
</ant>

Като алтернатива можете да дефинирате нова цел във файловете Project1,2,3 build.xml, наречена cleanBuild, която от своя страна ще извика clean, последвана от build, ако искате да я запазите като единичен xml елемент <ant dir="C:/work/project1" target="cleanBuild">

person Alex    schedule 21.03.2012
comment
хм .. Опитах това, но не е точно. Тази команда clean build изглежда не работи от моя страна. - person Juano7894; 22.03.2012
comment
имате ли clean и build дефинирани цели в 3-те файла build.xml? - person Alex; 22.03.2012
comment
да.. Ако направя, както казах в моята актуализация на моя въпрос, тогава работи. Знаете ли по-добър начин? - person Juano7894; 22.03.2012
comment
Трябва да имате отделна цел за почистване. Това би позволило clean да бъде извикван само когато е необходимо. В противен случай чистото изграждане ще доведе до бавни цикли на изграждане на код и тестване. build-doctor.com/2008 /07/23/ant-best-practices-the-clean-test - person Tom Howard; 22.03.2012
comment
Изпълнението на @TomHoward както clean, така и build цели е част от въпроса за OP. В моя отговор cleanBuild ще зависи от clean, build, така че промяната на компилация без почистване ще изисква само промяна на целта в основния build.xml на build вместо на cleanBuild - person Alex; 22.03.2012
comment
Той всъщност не е заявил, че иска да прави почистване преди всяко отделно изграждане, но дори и да е това, което иска, не трябва да оправдавате лошата практика. Да, отговорете на въпроса, но също така обяснете защо е лошо и какъв е правилният подход. - person Tom Howard; 23.03.2012
comment
От първата редакция на въпроса: In fact I want to acomplish this: C:/work/project1 ant clean build C:/work/project2 ant clean build C:/work/project3 ant clean build. Що се отнася до коректността на чистата компилация, въпреки че съм съгласен, че повтарящите се (или чести) чисти компилации са лоша практика, не мисля, че въпрос за чиста компилация трябва автоматично да включва корекция на използването само на инкрементална компилация. - person Alex; 23.03.2012
comment
Опитах горния начин, но ми дава Target build не съществува в проекта TestActivity. Трябва ли да направя нещо за build.xml в проекта TestActivity? - person nilMoBile; 09.08.2012