android - 自定义 Gradle 日志记录

标签 android android-studio gradle buildkite

我公司使用Buildkite用于我们的 CI 服务。当 CI 服务器触发构建时,构建中的所有日志都会发送到 Buildkite 并通过 UI 提供。这很有用,因为它允许我们检查构建失败的原因。

Buildkite 具有从格式如下的日志创建可折叠组的功能:

--- Compiling
logs after this point will be in a collapsible group named 'Compiling'

--- Testing
logs after this point will be in a collapsible group named 'Testing'

如何将自定义日志记录添加到将输出这些“组”的 gradle 构建中?我想有一个组用于编译/组装,一个用于运行单元测试等。

我考虑过添加执行日志记录的任务并使它们成为内置任务的依赖项,但我不确定该怎么做,或者总体上这是否是个好主意。

最佳答案

我正在使用 Gradle 2.12 并从 Logging doc 中提取了一个示例.该示例未使用 Android Studio 或 BuildKite,但我相信这将有助于解决基本问题。

给定一个典型 Java 项目的简单 build.gradle 文件:

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.11'
}

compileJava << { println "TRACER example log from compileJava" }
compileTestJava << { println "TRACER example log from compileTestJava" }

test << { println "TRACER example log from test" }

和一个init.gradle文件:

useLogger(new CustomEventLogger())

class CustomEventLogger extends BuildAdapter implements TaskExecutionListener {

    public void beforeExecute(Task task) {
        if (task.name ==~ "compileJava") {
            println "--- Compiling"
        } else if (task.name == "test") {
            println "--- Testing"
        }
    }

    public void afterExecute(Task task, TaskState state) {}

    public void buildFinished(BuildResult result) {}
}

然后这个命令行:

$ gradle -I init.gradle test

产生这个输出:

--- Compiling
TRACER example log from compileJava
TRACER example log from compileTestJava
--- Testing
TRACER example log from test

关于android - 自定义 Gradle 日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37013717/

相关文章:

gradle - 如何使用Kotlin Gradle DSL在 block 内获取自定义方法?

android - 在 build.gradle 中添加依赖项时出现 Gradle 错误

android - 如何关闭android上的覆盖权限

java - 如何修复无法解析符号 'activity_main' ?

android - findViewById 为首选项布局返回 null

android - 如何使Android库资源私有(private)?

android - 滚动到 NestedScrollView 内的 recyclerview 中的位置?

android - Android 应用程序的付费和免费版本

android - SQLiteDatabase 的 openOrCreateDatabase 和 Context 的区别?

android - 为所有 Activity 设置工具栏