我怎样才能让 Gradle ant logging 工作?
How can I get Gradle ant logging to work?
当我用 gradlew deployJelastic
运行它时,我没有得到任何输出。
task deployJelastic() {
logging.level = LogLevel.INFO
ant.taskdef(name: 'jelastic', classname: 'com.jelastic.Jelastic', classpath: configurations.jelastic.asPath)
ant.jelastic(email: "foo",
password: "bar",
dir: "",
filename: "baz-1.0.war",
context: "",
environment: "env",
apihoster: "app.whelastic.net") {
}
}
如果我使用 gradlew deployJelastic -i
运行任务,我会得到我正在寻找的所有 ant 输出。
我不想更改任何其他任务的日志记录输出,但出于某种原因,我无法使用此 gradle 推荐的方法。
来自 Gradle 的日志页面。 http://www.gradle.org/docs/current/userguide/logging.html
要在任务执行期间更改标准输出或错误的日志级别,任务还提供了一个 LoggingManager。
这就是我在此处访问和设置的内容。 logging.level = LogLevel.INFO
我正在使用此设置从命令行执行。
Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_71 (Oracle Corporation 24.71-b01)
OS: Windows 7 6.1 amd64
我能够让它像这样工作。显然 {} 里面的东西是任务的配置。这就是你想要做的事情,在任务对象上调用 setter。 doLast 是一个闭包,它接受一组要执行的命令。因此,如果您使用这种形式,您定义一个任务,在顶部进行所有任务配置,然后在 doLast { } 闭包中编写任务应该执行的任何代码。
我觉得这非常令人困惑,但在经历了几十次任务定义迭代之后,我发现这个是最好的。顺便说一句,我不知道 doLast 如何与使用 << 运算符附加的其他任务操作交互,因此您的里程可能会有所不同。我不知道 doLast 是否只是在定义时附加到任务列表中的最后一个位置,或者它是否是一个保证最后一个的特殊位置。
task deployJelastic(name: 'deployJelastic', dependsOn: war) {
logging.level = LogLevel.INFO
def environmentSuffix = project.properties.enviromentSuffix ?: "test"
doLast {
ant.taskdef(name: 'jelastic', classname: 'com.jelastic.Jelastic', classpath: configurations.jelastic.asPath)
ant.jelastic(email: "",
password: "",
dir: project.projectDir.absolutePath + "/build/libs/",
filename: "ServeDirtyLibsInJava-${project.version}.war",
context: "",
environment: "foo-${environmentSuffix}",
apihoster: "app.whelastic.net") //Got this from http://docs.jelastic.com/jelastic-hoster-info
}
}
当我用 gradlew deployJelastic
运行它时,我没有得到任何输出。
task deployJelastic() {
logging.level = LogLevel.INFO
ant.taskdef(name: 'jelastic', classname: 'com.jelastic.Jelastic', classpath: configurations.jelastic.asPath)
ant.jelastic(email: "foo",
password: "bar",
dir: "",
filename: "baz-1.0.war",
context: "",
environment: "env",
apihoster: "app.whelastic.net") {
}
}
如果我使用 gradlew deployJelastic -i
运行任务,我会得到我正在寻找的所有 ant 输出。
我不想更改任何其他任务的日志记录输出,但出于某种原因,我无法使用此 gradle 推荐的方法。
来自 Gradle 的日志页面。 http://www.gradle.org/docs/current/userguide/logging.html
要在任务执行期间更改标准输出或错误的日志级别,任务还提供了一个 LoggingManager。
这就是我在此处访问和设置的内容。 logging.level = LogLevel.INFO
我正在使用此设置从命令行执行。
Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_71 (Oracle Corporation 24.71-b01)
OS: Windows 7 6.1 amd64
我能够让它像这样工作。显然 {} 里面的东西是任务的配置。这就是你想要做的事情,在任务对象上调用 setter。 doLast 是一个闭包,它接受一组要执行的命令。因此,如果您使用这种形式,您定义一个任务,在顶部进行所有任务配置,然后在 doLast { } 闭包中编写任务应该执行的任何代码。
我觉得这非常令人困惑,但在经历了几十次任务定义迭代之后,我发现这个是最好的。顺便说一句,我不知道 doLast 如何与使用 << 运算符附加的其他任务操作交互,因此您的里程可能会有所不同。我不知道 doLast 是否只是在定义时附加到任务列表中的最后一个位置,或者它是否是一个保证最后一个的特殊位置。
task deployJelastic(name: 'deployJelastic', dependsOn: war) {
logging.level = LogLevel.INFO
def environmentSuffix = project.properties.enviromentSuffix ?: "test"
doLast {
ant.taskdef(name: 'jelastic', classname: 'com.jelastic.Jelastic', classpath: configurations.jelastic.asPath)
ant.jelastic(email: "",
password: "",
dir: project.projectDir.absolutePath + "/build/libs/",
filename: "ServeDirtyLibsInJava-${project.version}.war",
context: "",
environment: "foo-${environmentSuffix}",
apihoster: "app.whelastic.net") //Got this from http://docs.jelastic.com/jelastic-hoster-info
}
}