Выполнить выбранные задачи муравья для выбранного набора проектов - PullRequest
0 голосов
/ 26 февраля 2019

Я определил цели в ant для наших игр, например clean, build-ios, build-android, deploy-ios, deploy-android и т. Д. Теперь я хотел бы определить новый набор целей, которые представляют наши игры,скажем, game1, game2, game3.

Моя цель состоит в том, чтобы иметь возможность запускать ant с набором целевых игр и набором целевых задач, чтобы для каждой выбранной игры выполнялась каждая выбранная задача.

Пример псевдокода: Foreach [game1, game3]: clean, build-ios, deploy-ios

Как этого добиться с помощью муравья?Требуется определить, какие игры и какие задачи выбираются с помощью целей, а не записывать их в файл, который изменяется вручную.

1 Ответ

0 голосов
/ 26 февраля 2019

Задача subant полезна в ситуациях, когда у вас есть несколько подпроектов, которые имеют сходные структуры.

В вашем основном build.xml определите цель, которая стирает желаемую цель сборки в ваших подкаталогах игры, а такжесо всеми обобщенными целями сборки.

<target name="deploy-all">
    <subant target="deploy">
        <dirset dir="." includes="game-*" />
    </subant>

    <echo message="All games deployed." />
</target>

<target name="deploy" depends="deploy-ios,deploy-android">
    <echo message="${ant.project.name} build complete." />
</target>

<target name="clean">
    <echo message="Cleaning ${ant.project.name}" />
</target>

<target name="build-ios" depends="clean">
    <echo message="Building iOS ${ant.project.name}" />
</target>

<target name="build-android" depends="clean">
    <echo message="Building Android ${ant.project.name}" />
</target>

<target name="deploy-ios" depends="build-ios">
    <echo message="Deploying iOS ${ant.project.name}" />
</target>

<target name="deploy-android" depends="build-android">
    <echo message="Deploying Android ${ant.project.name}" />
</target>

Затем в подкаталогах game- * создайте простой build.xml, который ссылается на общий.

game-1 /build.xml:

<project name="game-1" default="build">
    <import file="../build.xml" />

    <echo message="=== Building Game 1 ===" />
</project>

game-2 / build.xml:

<project name="game-2" default="build">
    <import file="../build.xml" />

    <echo message="=== Building Game 2 ===" />
</project>

Редактировать: если ваша сборка должна включать / исключать определенные подпроекты на основе ввода пользователя или предварительно-определенное свойство, вы можете изменить вложенную коллекцию ресурсов задачи subant, чтобы приспособиться к этому.

    <property name="game.includes" value="game-*" />
    <property name="game.excludes" value="" />

    <subant target="deploy">
        <dirset dir="." includes="${game.includes}" excludes="${game.excludes}" />
    </subant>

Затем пользователь может запустить команду, которая дополнительно передает значения для game.includes и / или game.excludes,Если эти свойства не указаны, значения, определенные выше задачей property, будут использоваться по умолчанию.

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