ฉันต้องการที่จะดำเนินการgradle build
โดยไม่ต้องดำเนินการทดสอบหน่วย ฉันเหนื่อย:
$ gradle -Dskip.tests build
ดูเหมือนจะไม่ทำอะไรเลย มีคำสั่งอื่นที่ฉันสามารถใช้ได้ไหม?
-DskipTests
สำหรับ Maven
ฉันต้องการที่จะดำเนินการgradle build
โดยไม่ต้องดำเนินการทดสอบหน่วย ฉันเหนื่อย:
$ gradle -Dskip.tests build
ดูเหมือนจะไม่ทำอะไรเลย มีคำสั่งอื่นที่ฉันสามารถใช้ได้ไหม?
-DskipTests
สำหรับ Maven
คำตอบ:
คุณควรใช้-x
อาร์กิวเมนต์บรรทัดคำสั่งซึ่งไม่รวมงานใด ๆ
ลอง:
gradle build -x test
ปรับปรุง:
ลิงก์ในความคิดเห็นของปีเตอร์เปลี่ยนไป นี่คือแผนภาพจากคู่มือผู้ใช้ Gradle
-x integTest
และอื่น ๆ -DskipTests
จึงไม่เป็นความสะดวกที่ผ้าห่ม
run
ฉันเห็นผลของโปรแกรม Hello ของฉัน แต่ฉันคิดว่ามันกำลังรวบรวมทุกอย่างอีกครั้ง ฉันต้องการที่จะรันโปรแกรมจาวาเท่านั้น
ลอง:
gradle assemble
ในการแสดงรายการงานที่มีอยู่ทั้งหมดสำหรับโครงการของคุณลอง:
gradle tasks
UPDATE:
นี่อาจดูเหมือนคำตอบที่ไม่ถูกต้องที่สุดในตอนแรก แต่อ่านgradle tasks
ผลลัพธ์หรือเอกสารอย่างระมัดระวัง
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
gradle assemble
จะไม่รวบรวมไฟล์หลัก หากคุณทำงานในการรับการทดสอบหน่วยของคุณคงที่แล้วคุณต้องการgradle assemble testClasses
- ฉันคิดว่าการตั้งชื่องานสร้างค่อนข้างสับสน
คำตอบที่ยอมรับคือคำตอบที่ถูกต้อง
OTOH วิธีที่ฉันแก้ไขก่อนหน้านี้คือการเพิ่มสิ่งต่อไปนี้ในโครงการทั้งหมด:
test.onlyIf { ! Boolean.getBoolean('skip.tests') }
รันบิลด์ด้วย-Dskip.tests=true
และงานทดสอบทั้งหมดจะถูกข้าม
คุณสามารถเพิ่มบรรทัดต่อไปนี้build.gradle
, **/*
ไม่รวมการทดสอบทั้งหมด
test {
exclude '**/*'
}
คุณสามารถยกเว้นงาน
gradle build --exclude-task test
ในการแยกงานใด ๆ ออกจากการไล่ระดับสีให้ใช้-x
ตัวเลือกบรรทัดคำสั่ง ดูตัวอย่างด้านล่าง
task compile << {
println 'task compile'
}
task compileTest(dependsOn: compile) << {
println 'compile test'
}
task runningTest(dependsOn: compileTest) << {
println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
println 'running distribution job'
}
ผลลัพธ์ของ: gradle -q dist -x runningTest
task compile
compile test
running distribution job
หวังว่านี่จะให้พื้นฐานแก่คุณ
วิธีที่แตกต่างในการปิดใช้งานงานทดสอบในโครงการคือ:
tasks.withType(Test) {enabled = false}
พฤติกรรมนี้จำเป็นในบางครั้งหากคุณต้องการปิดการทดสอบในโครงการใดโครงการหนึ่ง (หรือกลุ่มโครงการ)
วิธีนี้ใช้ได้ผลกับงานทดสอบทุกประเภทไม่ใช่แค่จาวา 'ทดสอบ' นอกจากนี้วิธีนี้มีความปลอดภัย นี่คือสิ่งที่ฉันหมายถึง: คุณมีชุดของโครงการในภาษาต่าง ๆ : ถ้าเราพยายามที่จะเพิ่มบันทึกชนิดนี้ในหลักbuild.gradle
:
subprojects{
.......
tests.enabled=false
.......
}
เราจะล้มเหลวในโครงการเมื่อเราไม่มีงานที่เรียกว่าการทดสอบ
ใช้-x test
การดำเนินการทดสอบข้าม แต่ยังไม่รวมการรวบรวมรหัสทดสอบ
gradle build -x test
ในกรณีของเราเรามีกระบวนการ CI / CD ที่มีการรวบรวมเป้าหมายหนึ่งเป้าหมายและเป้าหมายถัดไปคือการทดสอบ (Build -> Test)
ดังนั้นสำหรับBuild
เป้าหมายแรกของเราเราต้องการให้แน่ใจว่าโครงการทั้งหมดรวบรวมได้ดี สำหรับสิ่งนี้เราได้ใช้:
./gradlew build testClasses -x test
ในเป้าหมายต่อไปเราเพียงแค่ทำการทดสอบ
gradle build -x test --parallel
หากเครื่องของคุณมีหลายแกน อย่างไรก็ตามไม่แนะนำให้ใช้การทำความสะอาดแบบขนาน
โปรดลองสิ่งนี้:
gradlew -DskipTests=true build
ในปลั๊กอิน Java :
$ gradle tasks
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
testClasses - Assembles test classes.
Verification tasks
------------------
test - Runs the unit tests.
Gradle build โดยไม่ต้องทดสอบคุณมีสองตัวเลือก:
$ gradle assemble
$ gradle build -x test
แต่ถ้าคุณต้องการรวบรวมการทดสอบ:
$ gradle assemble testClasses
$ gradle testClasses