Android и Ant - в частности, taskdef и anttasks.jar - PullRequest
0 голосов
/ 03 ноября 2010

Я собираюсь сделать сборку Ant на моих источниках Eclipse. Конечная цель состоит в том, чтобы исходные и выходные данные Eclipse находились в папке, полностью находящейся вне файловой структуры Eclipse.

Уже давно я использую Ant, поэтому постепенно комментирую, а затем комментирую биты из стандартного build.xml, который генерируется при сборке примера проекта из командной строки. Я собираюсь добавить много «эха», чтобы убедиться, что каталоги получаются прямо перед тем, как я позволю ему что-то сделать. Я начал с простой цели для мусора в верхней части build.xml, которая просто повторяла «мусор» - все работало нормально.

Затем я раскомментировал этот бит:

   <!-- Custom Android task to deal with the project target, and import the
         proper rules.
         This requires ant 1.6.0 or above. -->
    <path id="android.antlibs">
        <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
        <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
        <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
    </path>

    <taskdef name="setup"
        classname="com.android.ant.SetupTask"
        classpathref="android.antlibs" />
    <!-- Lots of commented out stuff -->

    <setup />

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

[setup] Android SDK Tools Revision 7
[setup] Project Target: Google APIs
[setup] Vendor: Google Inc.
[setup] Platform Version: 2.1-update1
[setup] API level: 7
[setup]
[setup] ------------------
[setup] Resolving library dependencies:
[setup] ------------------
[setup] Ordered libraries:
[setup] ------------------
[setup]

Конечно, я ожидаю, что это не удастся, потому что я не настроил никаких каталогов input / output / lib в файлах .properties. Мне любопытно узнать, почему само задание запускается, когда я вызываю только цель «мусор». Я также хотел бы знать, что на самом деле делает SetupTask и все остальные в anttasks.jar и где я могу найти для них документацию.

Ответы [ 2 ]

1 голос
/ 03 ноября 2010

В моем build.xml, чуть ниже вашей точки отсечения есть строка, которая гласит:

<setup />

Если она у вас, это ваш преступник.

0 голосов
/ 03 ноября 2010

Любая задача, включенная в верхний уровень файла сборки (т.е. вне какой-либо цели), автоматически включается в неявную цель инициализации, которая запускается при каждом запуске сборки, независимо от того, какую фактическую цель вы указали.

Таким образом, элемент taskdef для задачи установки объявляет эту задачу, но затем следующая строка, <setup />, поскольку это верхний уровень файла сборки, будет вызывать выполнение задачи каждый раз, когда вы запускаете ant этот файл сборки.

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