บันทึก Gradle
เผยแพร่เมื่อ 23 May 2022
สารบัญ
- แสดงความช่วยเหลือ
- กำหนดคุณสมบัติระบบของ JVM : `-D, --system-prop
- ตั้งค่าคุณสมบัติของโครงการสำหรับสคริปต์บิลด์ : `-Pmyprop=myvalue
- ระบุไดเรกทอรีเริ่มต้นของ Gradle. ค่าเริ่มต้นคือไดเรกทอรีปัจจุบัน.
- โอเวอร์โหลด property 'param_component' ผ่านบรรทัดคำสั่ง :
- เพิ่มโฟลเดอร์ลงใน source-set ของโครงการทั่วไปโดยใช้ Kotlin DSL
- เพิ่มโฟลเดอร์ลงใน source-set ของโปรเจกต์ Android ด้วย Groovy DSL
- หลีกเลี่ยงการสร้างและทดสอบโมดูลย่อย
- Tar โฟลเดอร์
- แสดงการพึ่งพาของบิลด์
- ตัวอย่างการใช้ reduce : การเชื่อมต่อรายการเป็นสตริง
- ดึงคำอธิบายของงานเฉพาะ
- หากต้องการเรียกใช้งานจาก workingDir ราก ให้ต่อหน้าชื่องานด้วย `:
- เพื่อเรียกใช้งานที่ล้มเหลวใหม่ ให้ใช้ตัวเลือก `--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
โอเวอร์โหลด property 'param_component' ผ่านบรรทัดคำสั่ง :
./gradlew -Pparam_component=CUSTOM_VALUE
เพิ่มโฟลเดอร์ลงใน source-set ของโครงการทั่วไปโดยใช้ Kotlin DSL
sourceSets {
getByName("test"){
java.srcDir("src/scripts/groovy")
}
getByName("test"){
java.srcDir("src/scripts/kscript")
}
getByName("test"){
java.srcDir("src/test/javascript")
}
}
เพิ่มโฟลเดอร์ลงใน source-set ของโปรเจกต์ Android ด้วย Groovy DSL
android {
sourceSets {
main.java.srcDirs += "src/main/../../../../ceelo/domain/src/main/java/"
test.java.srcDirs += "src/test/../../../../ceelo/domain/src/test/java/"
}
}
หลีกเลี่ยงการสร้างและทดสอบโมดูลย่อย
gradle build -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",
)
}
}
}
Tar โฟลเดอร์
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"))
}
}
แสดงการพึ่งพาของบิลด์
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
หากต้องการเรียกใช้งานจาก workingDir ราก ให้ต่อหน้าชื่องานด้วย `:
./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
สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการสคริปต์การกระทำในหลายโครงการจากตำแหน่งศูนย์กลาง
ดูเพิ่มเติม :