Выполнение задачи doFirst () не выполняется сначала, но после выполнения задачи

Я создал задачу Gradle в Java:

class TestTask extends Exec {

    public TestTask() {

        doLast(new Action<Object>(){
            @Override
            public void execute(Object task) {
                System.out.println("Should be last ");
            }
        });

        doFirst(new Action<Object>(){
            @Override
            public void execute(Object task) {
                System.out.println("Should be first ");
            }
        });

        commandLine("echo", "Should be between");
    }
}

Выполняя эту задачу, я ожидаю получить

Should be first
Should be between
Should be last

, но вместо этого получаю

Should be between
Should be first
Should be last

Я собираюсь преобразовать плагин из Groovy в Java, а в Groovy порядок обработки был таким, как ожидалось, когда он определен следующим образом:

task dofirsttest(type: Exec) {
    doFirst{
        println "Should be first"
    }
    doLast{
        println "Should be last"
    }
    commandLine "echo", "Should be between"
}

Что-то не так с моей задачей? [ ! d4]

0
задан 13 August 2018 в 16:05

1 ответ

commandLine("echo", "Should be between"); находится в фазе конфигурации задачи. Так что это будет выполнено в первую очередь. Посмотрите: https://docs.gradle.org/current/userguide/build_lifecycle.html

0
ответ дан 15 August 2018 в 16:59
  • 1
    Насколько я понимаю, commandline настраивает задачу только для последующего выполнения, как и другие задачи. В противном случае я увижу вывод во время фазы конфигурации, например. г. на gradle task и без вывода на этапе выполнения. – jai 13 August 2018 в 15:59

Другие вопросы по тегам:

Похожие вопросы: