Цепная задача Gradle не может прочитать файл, созданный предыдущей задачей - PullRequest
0 голосов
/ 04 мая 2019

У меня есть задача gradle, taskA, которая при запуске генерирует html-файл.Затем taskB попытается открыть этот файл.Когда я соединяю их в цепочку, например:

./gradlew taskA taskB

, тогда taskB не может увидеть сгенерированный файл.Между прочим, IntelliJ открыт и не видит файл одновременно.

Однако, если я запускаю команды отдельно, например,

./gradlew taskA
./gradlew taskB

, тогда taskB может видеть файл нормально.Знаете ли вы, как я мог бы связать команды с эффектом запуска их отдельно?Я пытался использовать clean в начале taskB, но это не помогает.

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Цепочка задач в Gradle заключается в том, что taskA зависит от taskB .

Вы можете сделать это следующим образом:

apply plugin: 'base'    

def file = project.file('shared-file.txt')

task taskA {
    outputs.file(file)
    doLast {
        // Create the file
        file.text = "Hello world!"
    }
}

task taskB(dependsOn: taskA) {
    inputs.file(file)
    doLast {
        // Print file content
        println file.text
    }
}

Чтобы очистить файл, вы можете запустить cleanTaskA , который очистит все выходные данные, которые taskA определил.Или, если вы хотите добавить очистку к общей задаче clean , добавьте clean.dependsOn (cleanTaskA, cleanTaskB) .

0 голосов
/ 06 мая 2019

То, как я заставил его работать, было cd возвращением в текущий каталог. Это может быть достигнуто с помощью следующей команды, когда вы находитесь в правильном каталоге:

cd .

Это заставляет gradle немедленно забирать новые файлы.

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