gradle: несортированный зависит от задач, как справиться? - PullRequest
3 голосов
/ 07 июня 2011

В моей процедуре установки есть три этапа:

1) загрузка 2) разархивирование 3) настройка

загрузок, использование ant.get и ant.checksum, поэтому я создаю свой собственный DownloadTaskкласс, а затем в сборке:

task download (type: DownloadTask) {
    url = url
    checksumAlgorithm = 'MD5'
    destFile = zipFile
}

, поэтому я пришел с 4 задачами:

task download {...}
task unzip {...}
task configure {..}
task install(dependsOn: [download, unzip, configure]) {}

Но я заметил, что зависит от не соблюдайте порядок сортировки, http://issues.gradle.org/browse/GRADLE-427

Итак ... как здесь обходной путь?

Я не могу переместить только эти задачи в качестве методов, потому что для загрузки используется мой класс DownloadTask.Я могу переместить все как методы (даже DownloadTask), но не кажется лучшим решением здесь.

Спасибо

Ответы [ 2 ]

9 голосов
/ 09 июня 2011

Ну, вы также можете вызвать свои зависимости вручную, если это поможет вам:

task install << {
    download.execute()
    unzip.execute()
    configure.execute()
}

Я не думаю, что это настоящая идея Gradle, но для моей многопроектной сборки этоработал довольно хорошо.

Привет,

Ян

2 голосов
/ 07 июня 2011

Как уже упоминал Тим, вы можете настроить свою сборку на наличие этих зависимостей. Что вы имеете в виду под «повторным использованием» заданий? Вы можете использовать здесь автоматическую разводку вместо использования свойства depenOn.

Autowire означает, что вы объявляете вывод загрузки задачи как вход для задачи распаковки и так далее. В приведенном выше примере url будет вводом вашей задачи Download, а destFile - выводом. Такой подход облегчает повторное использование каждой задачи и делает ненужным явное упорядочивание. В главе 14.8 этого руководства вы можете найти краткое введение в этот вид автопроводки (http://www.gradle.org/current/docs/userguide/more_about_tasks.html#N10D4D). Посмотрите также Javadoc о TaskInputs и TaskOutputs (упомянутых в этой главе).

С уважением, Рене

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