显示帮助

./gradlew --help

设置 JVM 系统属性: `-D, --system-prop

./gradlew -Dmyprop=myvalue
#ou
./gradlew --system-prop myvalue

定义项目属性以用于构建脚本:`-Pmyprop=myvalue

./gradlew -Pmyprop=myvalue
#ou
./gradlew --project-prop myvalue

指定 Gradle 的启动目录。默认值是当前目录。

./gradlew -p ~/src/next_startup
#ou
./gradlew --project-dir ~/src/next_startup

通过命令行覆盖属性 'param_component' :

./gradlew -Pparam_component=CUSTOM_VALUE

在普通项目中使用 Kotlin DSL 向 source set 添加文件夹

sourceSets {
    getByName("test"){
        java.srcDir("src/scripts/groovy")
    }
    getByName("test"){
        java.srcDir("src/scripts/kscript")
    }
    getByName("test"){
        java.srcDir("src/test/javascript")
    }
}

使用 Groovy DSL 在 Android 项目中将文件夹添加到 source-set

android {
    sourceSets {
        main.java.srcDirs += "src/main/../../../../ceelo/domain/src/main/java/"
        test.java.srcDirs += "src/test/../../../../ceelo/domain/src/test/java/"
    }
}

避免构建和测试子模块

gradle 构建 -x :excluded-module:check -x :excluded-module:assemble -x :excluded-module:build

移动文件
tasks.register("moveWebappNode") {
    doLast {
        ant.withGroovyBuilder {
            "move"(
                "webapp/node_modules" to "$rootDir/webapp-src/node_modules",
            )
        }
    }
}

压缩一个文件夹

tasks.register<Tar>("tarWebapp") {
    dependsOn("moveWebappNpm")
    group = WEBAPP
    description = "tar webapp"
    doLast {
        setOf(
            "build",
            "target",
            "node_modules"
        ).forEach { dir -> exclude { it.name .dir } }
        archiveFileName.set("webapp.tar")
        destinationDirectory.set(File("${rootDir.absolutePath}$sep$WEBAPP_SRC"))
    }
}

Afficher les dépendances d’un build

tasks.register("printDependencies") {
    description = "print project dependencies"
    group = WEBAPP
    doLast {
        println("${project.name} dependencies")
        mutableMapOf<String, Map<String, String>>(
            "buildDependencies" to buildDependencies,
            "domainDeps" to domainDeps,
            "domainTestDeps" to domainTestDeps,
        ).apply { putAll(appModules) }
            .forEach { module ->
                if (module.value.isNotEmpty()) {
                    println("${module.key}:")
                    module.value.forEach { println(dependency(it)) }
                    println()
                }
            }
    }
}

reduce 的使用示例:将列表连接成字符串

tasks.register("printWebappSrc") {
    description = "print webapp sources"
    group = WEBAPP
    doLast {
        webAppSrc
            .reduce { acc, s -> "$acc\n\t$s" }
            .run { println("$WEBAPP_SRC: $this\n") }
    }
}

获取特定任务的描述

./gradlew -q help --task foo

要从工作目录根目录启动一个任务,则在任务前加上 `:

./gradlew :foo

要重新运行失败的任务,请使用选项 `--rerun-tasks

./gradlew check --rerun-tasks

从另一个目录启动特定项目中的任务

选项`-p` (ou --project-dir) 允许指定 Gradle 项目的路径并在其中执行任务,即使当前目录不同。

例如,为了启动任务`build`项目位于`~/projets/mon-autre-projet`同时位于另一个目录 :

./gradlew -p ~/projets/mon-autre-projet build

这对于在多个项目上从中心位置编写脚本特别有用。

参见:

相关文章