Gradle println печатает, когда он не вызывается
моя цель-напечатать сообщение на консоли всякий раз, когда idea
задача выполняется, но, к сожалению, сообщение печатается, когда все бегут. Почему строки печати выполняются, когда idea
задача не выполняется? Как я могу отобразить сообщение только тогда, когда idea
задание выполнено?
построить.Gradle в
apply plugin: 'idea'
task hello << {
println 'Hello world!'
}
tasks.idea() {
println '*********************************************************'
println '* You should open build.gradle as a native project from *'
println '* within IntelliJ. *'
println '*********************************************************'
}
вывод команды gradle hello
*********************************************************
* You should open build.gradle as a native project from *
* within IntelliJ. *
*********************************************************
:hello
Hello world!
BUILD SUCCESSFUL
Total time: 2.846 secs
Рабочего Раствора
tasks.getByPath('idea') << {
println '*********************************************************'
println '* You should open build.gradle as a native project from *'
println '* within IntelliJ. *'
println '*********************************************************'
}
2 ответов
вам нужно будет поставить свой println
s в действие и добавьте его в idea
задач. В следующем примере показано использование doFirst
действие:
ideaProject.doFirst {
println '*********************************************************'
println '* You should open build.gradle as a native project from *'
println '* within IntelliJ. *'
println '*********************************************************'
}
существует определенная причина, по которой ваш код выполняется до idea
задача выполняется: она оценивается как код конфигурации, выполняемый на этапе конфигурации жизненный цикл сборки Gradle. На этапе выполнения выполняются только действия. Ваш hello
задач это.
изменить: idea
и org.gradle.plugins.ide.idea.model.IdeaModel
в этом контексте, а не задача.
если вы хотите заставить gradle печатать некоторые сообщения, но только на этапе выполнения, переместите println
команды doFirst
или doLast
. Пример для военного задания:
war {
doFirst {
println "Packing module/project to " + archiveName + " ..."
}
manifest {
// attributes ...
}
// other commands ...
doLast {
println "Packing done. See target directory."
}
}