Gradle 备忘录
Publié le 23 May 2022
Sommaire
- 显示帮助
- 设置 JVM 系统属性: `-D, --system-prop
- 定义项目属性以用于构建脚本:`-Pmyprop=myvalue
- 指定 Gradle 的启动目录。默认值是当前目录。
- 通过命令行覆盖属性 'param_component' :
- 在普通项目中使用 Kotlin DSL 向 source set 添加文件夹
- 使用 Groovy DSL 在 Android 项目中将文件夹添加到 source-set
- 避免构建和测试子模块
- 压缩一个文件夹
- Afficher les dépendances d’un build
- reduce 的使用示例:将列表连接成字符串
- 获取特定任务的描述
- 要从工作目录根目录启动一个任务,则在任务前加上 `:
- 要重新运行失败的任务,请使用选项 `--rerun-tasks
- 从另一个目录启动特定项目中的任务
显示帮助
./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