Как выполнить корневой проект перед тем, как все подпроекты в gradle - PullRequest
0 голосов
/ 11 января 2019

Я хочу выполнить корневой проект в первую очередь перед всеми подпроектами, и причина в том, что у меня есть набор задач в корневом проекте, который генерирует свойства, добавляя его в файл properties.gradle или local.properties (например: VAR = 10), который затем Я хочу использовать его во всех подпроектах.

Поскольку сборка gradle выполняется параллельно, когда я пытаюсь ссылаться на свойства в подпроектах, которые не будут выполнены.

Ожидается ответ, спасибо заранее.

1 Ответ

0 голосов
/ 14 января 2019

Файл gradle.properties читается один раз, в начале выполнения сборки он не будет перезагружен для каждого подпроекта, поэтому, если вы измените этот файл из задач корневого проекта, вы не сможете ожидать обновления свойств быть доступным для подпроектной задачи. (и я не думаю, что это хорошая идея изменить это gradle.properties из вашего скрипта сборки)

Почему бы вам просто не установить свои свойства с помощью project.setProperty(key, value) (см. Project DSL )?

Пример:

сборка корневого проекта:

task setProperties(){
    doLast{
        def var = computeVar()
        project.setProperty('VAR', var )

        // DO NOT DO THAT: 
        //  new File('gradle.properties').append("\nVAR=" + var)
    }
}

из подпроекта:

task printProperties(){
    dependsOn tasks.getByPath(':setProperties')
    doLast{
        println "Properties: "
        println "VAR = $VAR"
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...