Создание сценария ant build для сборки только при обновлении зависимости - PullRequest
3 голосов
/ 14 апреля 2011

Я только начал работать с муравьем несколько дней назад.Прямо сейчас у меня есть общий buildall.xml, который должен вызывать build.xml каждого проекта.Поскольку некоторые проекты зависят друг от друга, мне нужно перестроить некоторые другие проекты, которые зависят от него.Это не проблема - я просто устанавливаю свойство зависимости цели.Однако ant всегда строит зависимости, даже когда файлы не изменились.

Допустим, у project1 нет зависимостей;проект2 зависит от проекта1;проект3 зависит от проекта1, 2;project4 зависит от project1, 2 и 3;и т. д.

Я мог бы взломать решение, которое рассматривает проект K и проверяет, обновили ли файлы проекта 1 .. проекта K, используя uptodate.Если так, то запустите цель.Это грязно и кажется ненужным.

Какой самый чистый способ реализовать это?

РЕДАКТИРОВАТЬ: Поэтому я решил просто взломать несколько целей, "check_projectK", где он проверяет uptodate на всех своихисходные файлы, файл сборки и файлы сборки проектов 1 .. K-1.Из-за зависимостей это всегда обрабатывается правильно.Однако это все еще большое количество копий и вставок для большого рабочего пространства.Я оставлю это открытым.

1 Ответ

1 голос
/ 15 апреля 2011

Короткий ответ, ANT не сможет этого сделать, если только у вас нет какого-либо способа подключиться к вашей системе контроля версий и проверить, изменилось ли что-нибудь (вы используете управление исходным кодом, верно?). Ant не знает, когда в последний раз изменялся файл, а затем проверял, совпадает ли он с тем, что было построено; у него нет концепции хранилища зависимостей. Вся цель Ant в том, что он просто строит .

Решением вашей проблемы является не муравей, а Maven. У Maven есть хранилище зависимостей. Есть также очень изящный плагин для Maven, используемый специально с Flex, который называется FlexMojos . Используя это, Maven может знать, когда что-то было построено в последний раз, потому что оно загружено в хранилище. Затем ваши другие проекты могут добавить свои зависимости и загрузить необходимый SWC.

Кроме того, он прекрасно сочетается с механизмом непрерывной интеграции, таким как Hudson, Bamboo и Teamcity, который создает проект каждый раз, когда файл передается в вашу систему контроля версий, а затем автоматически обновляет все зависимые проекты!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...