仅显示Gradle中意外异常的堆栈跟踪
在我的构建文件中,默认情况下,我总是将选项设置为显示堆栈跟踪仅显示Gradle中意外异常的堆栈跟踪,gradle,groovy,Gradle,Groovy,在我的构建文件中,默认情况下,我总是将选项设置为显示堆栈跟踪 gradle.startParameter.showStacktrace = org.gradle.api.logging.configuration.ShowStacktrace.ALWAYS 这在发生意外故障时非常有用。然而,有一些类型的失败和原因是典型的(比如编译失败或代码质量冲突),在这种情况下,我不想要stacktrace——只要控制台上有意义的输出就足够了 是否有一种方法可以禁用某些特定的异常或任务白名单的stackt
gradle.startParameter.showStacktrace = org.gradle.api.logging.configuration.ShowStacktrace.ALWAYS
这在发生意外故障时非常有用。然而,有一些类型的失败和原因是典型的(比如编译失败或代码质量冲突),在这种情况下,我不想要stacktrace——只要控制台上有意义的输出就足够了
是否有一种方法可以禁用某些特定的异常或任务白名单的stacktrace显示?这里有一种方法,尽管有些涉及。这个想法是基于一个概念 假设我们有一个Java项目,它有两个额外的任务:
apply plugin: 'java'
task foo() << {
throw new IllegalStateException("from foo")
}
task bar() << {
throw new GradleException("from bar")
}
必须在命令行上指定init.gradle
。e、 g.gradle-I init.gradle compileJava
它将为指定的两个异常打印压缩信息。(请注意,遍历原因层次结构以查找匹配项。)
缺点是这“完全禁用了Gradle的默认输出”,因此可能需要进一步调整,具体取决于需求
例如,如果我故意在Java中输入语法错误:
bash$ gradle -I init.gradle compileJava
[compileJava]
~/src/main/java/net/codetojoy/Employee.java:4: error: class, interface, or enum expected
public clazz Employee {
^
1 error
build completed
TRACER failed with: class org.gradle.internal.exceptions.LocationAwareException
LocationAwareException
TaskExecutionException
CompilationFailedException
然后我们观察stacktrace的压缩信息
bash$ gradle -I init.gradle compileJava
[compileJava]
~/src/main/java/net/codetojoy/Employee.java:4: error: class, interface, or enum expected
public clazz Employee {
^
1 error
build completed
TRACER failed with: class org.gradle.internal.exceptions.LocationAwareException
LocationAwareException
TaskExecutionException
CompilationFailedException