создавать несколько проектов и очищать несколько проектов в одном файле сборки с помощью 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, вы можете указать цели внешних файлов сборки ant

<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
хм .. Я пробовал это, но не точно. Эта команда чистой сборки, похоже, не работает с моей стороны. - 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, является частью вопроса ОП. В моем ответе 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
Я пробовал вышеуказанный способ, но он дает мне целевую сборку, не существует в проекте TestActivity. Нужно ли мне что-нибудь для build.xml в проекте TestActivity? - person nilMoBile; 09.08.2012