Gradle println在未调用时打印

Gradle println在未调用时打印,gradle,Gradle,我的目标是在运行idea任务时将消息打印到控制台,但不幸的是,每当运行任何东西时都会打印消息。当idea任务未运行时,为什么要执行打印行?如何仅在执行idea任务时显示消息 格雷德尔先生 apply plugin: 'idea' task hello << { println 'Hello world!' } tasks.idea() { println '******************************************************

我的目标是在运行
idea
任务时将消息打印到控制台,但不幸的是,每当运行任何东西时都会打印消息。当
idea
任务未运行时,为什么要执行打印行?如何仅在执行
idea
任务时显示消息

格雷德尔先生

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 '*********************************************************'
}
工作解决方案

tasks.getByPath('idea') << {
    println '*********************************************************'
    println '* You should open build.gradle as a native project from *'
    println '* within IntelliJ.                                      *'
    println '*********************************************************'
}

tasks.getByPath('idea')您需要将您的
println
s放入一个操作中,并将其添加到
idea
任务中。以下示例显示了
doFirst
操作的使用:

ideaProject.doFirst {
    println '*********************************************************'
    println '* You should open build.gradle as a native project from *'
    println '* within IntelliJ.                                      *'
    println '*********************************************************'
}
在运行
idea
任务之前执行代码有一个特定的原因:它被评估为在的配置阶段执行的配置代码。在执行阶段仅执行操作。您的
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."
    }
} 

另请参阅:@PaulVerest感谢您的链接
war {
    doFirst {
        println "Packing module/project to " + archiveName + " ..."
    }
    manifest {
        // attributes ... 
    }
    // other commands ...
    doLast {
        println "Packing done. See target directory."
    }
}