Gradle build โดยไม่ต้องทดสอบ


635

ฉันต้องการที่จะดำเนินการgradle buildโดยไม่ต้องดำเนินการทดสอบหน่วย ฉันเหนื่อย:

$ gradle -Dskip.tests build

ดูเหมือนจะไม่ทำอะไรเลย มีคำสั่งอื่นที่ฉันสามารถใช้ได้ไหม?



คุณใช้จาวาหรือเปล่า?
นาค

2
-DskipTestsสำหรับ Maven
Gayan Weerakutti

คำตอบ:


1240

คุณควรใช้-xอาร์กิวเมนต์บรรทัดคำสั่งซึ่งไม่รวมงานใด ๆ

ลอง:

gradle build -x test 

ปรับปรุง:

ลิงก์ในความคิดเห็นของปีเตอร์เปลี่ยนไป นี่คือแผนภาพจากคู่มือผู้ใช้ Gradle


45
นี่คือคำตอบที่ถูกต้อง 'gradle assemble' จะทำให้งานอื่น ๆ ออกไปมากมายเช่นกัน ดูแผนภาพนี้เพื่อรับแนวคิด สำหรับงานสร้างในชีวิตจริงทั่วไป 'gradle assemble' จะทำให้งานหนักขึ้น
Peter Niederwieser

13
ลิงก์จาก @PeterNiederwieser ไม่ถูกต้อง อาจเป็นไปได้ว่าเขาอ้างถึงแผนภาพนี้: gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

9
ธิแม้ว่าคุณอาจจำเป็นต้องเพิ่มเช่น-x integTestและอื่น ๆ -DskipTestsจึงไม่เป็นความสะดวกที่ผ้าห่ม
Jesse Glick

1
@c_maker, วิธีการดำเนินการจาก eclipse?
rinuthomaz

เป็นไปได้หรือไม่ที่จะเรียกใช้ไฟล์คลาส? ฉันหมายถึงเมื่อrunฉันเห็นผลของโปรแกรม Hello ของฉัน แต่ฉันคิดว่ามันกำลังรวบรวมทุกอย่างอีกครั้ง ฉันต้องการที่จะรันโปรแกรมจาวาเท่านั้น
Sigur

107

ลอง:

gradle assemble

ในการแสดงรายการงานที่มีอยู่ทั้งหมดสำหรับโครงการของคุณลอง:

gradle tasks

UPDATE:

นี่อาจดูเหมือนคำตอบที่ไม่ถูกต้องที่สุดในตอนแรก แต่อ่านgradle tasksผลลัพธ์หรือเอกสารอย่างระมัดระวัง

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

8
เป็นคำใบ้เพิ่มเติมในกรณีที่คุณทำการดีบั๊กหน่วยทดสอบ: gradle assembleจะไม่รวบรวมไฟล์หลัก หากคุณทำงานในการรับการทดสอบหน่วยของคุณคงที่แล้วคุณต้องการgradle assemble testClasses- ฉันคิดว่าการตั้งชื่องานสร้างค่อนข้างสับสน
มาร์ติน

36

คำตอบที่ยอมรับคือคำตอบที่ถูกต้อง

OTOH วิธีที่ฉันแก้ไขก่อนหน้านี้คือการเพิ่มสิ่งต่อไปนี้ในโครงการทั้งหมด:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

รันบิลด์ด้วย-Dskip.tests=trueและงานทดสอบทั้งหมดจะถูกข้าม


3
สำหรับฉันนี่ยังคงเป็นตัวเลือกการทำงานเพียงอย่างเดียวเนื่องจากการทดสอบ -x ดูเหมือนว่าจะทำงานในโครงการเริ่มต้นเท่านั้น แต่ไม่ใช่สำหรับการพึ่งพาในการสร้างหลายโครงการ วาง test.onlyif ... ในการกำหนดค่า (subprojects.findAll {javaProjects.contain (it.name)}) {} บล็อกใน root build.gradle ของคุณและมันจะทำงานสำหรับโครงการทั้งหมด
timm

สิ่งที่ดี. วิธีนี้คุ้นเคยกับผู้ใช้ที่หลอกลวง
AlexR

23

คุณสามารถเพิ่มบรรทัดต่อไปนี้build.gradle, **/*ไม่รวมการทดสอบทั้งหมด

test {
    exclude '**/*'
}

2
นี่คือคำตอบที่ดีที่สุด IMHO
Marco Sulla

1
ขอบคุณ! คำตอบของคุณมีประโยชน์
JAY Patel


4

การอ้างอิง

ในการแยกงานใด ๆ ออกจากการไล่ระดับสีให้ใช้-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

หวังว่านี่จะให้พื้นฐานแก่คุณ


กรุณาส่งภาพหน้าจอของหน้า ฉันไม่ทราบว่าจะนำบรรทัดของรหัสนี้ ....
โฮส Mansouri

ชิ้นส่วนของรหัสนี้ควรจะไปใน build.gradle ของคุณ :)
Suganthan ธา Pillai

2

วิธีที่แตกต่างในการปิดใช้งานงานทดสอบในโครงการคือ:

tasks.withType(Test) {enabled = false}

พฤติกรรมนี้จำเป็นในบางครั้งหากคุณต้องการปิดการทดสอบในโครงการใดโครงการหนึ่ง (หรือกลุ่มโครงการ)

วิธีนี้ใช้ได้ผลกับงานทดสอบทุกประเภทไม่ใช่แค่จาวา 'ทดสอบ' นอกจากนี้วิธีนี้มีความปลอดภัย นี่คือสิ่งที่ฉันหมายถึง: คุณมีชุดของโครงการในภาษาต่าง ๆ : ถ้าเราพยายามที่จะเพิ่มบันทึกชนิดนี้ในหลักbuild.gradle:

 subprojects{
 .......
 tests.enabled=false
 .......
}

เราจะล้มเหลวในโครงการเมื่อเราไม่มีงานที่เรียกว่าการทดสอบ


2

ใช้-x testการดำเนินการทดสอบข้าม แต่ยังไม่รวมการรวบรวมรหัสทดสอบ

gradle build -x test 

ในกรณีของเราเรามีกระบวนการ CI / CD ที่มีการรวบรวมเป้าหมายหนึ่งเป้าหมายและเป้าหมายถัดไปคือการทดสอบ (Build -> Test)

ดังนั้นสำหรับBuildเป้าหมายแรกของเราเราต้องการให้แน่ใจว่าโครงการทั้งหมดรวบรวมได้ดี สำหรับสิ่งนี้เราได้ใช้:

./gradlew build testClasses -x test

ในเป้าหมายต่อไปเราเพียงแค่ทำการทดสอบ



0

โปรดลองสิ่งนี้:

gradlew -DskipTests=true build


6
@KirankumarDafda - ไม่ คุณสามารถโพสต์คำตอบได้ทุกเมื่อที่คุณต้องการแม้ว่าจะได้รับคำตอบที่มีอยู่ คำตอบใหม่อาจดีกว่าคำตอบที่ยอมรับหรือแก้ไขด้วยวิธีอื่นหรือช่วยเหลือผู้อื่น จากการตรวจสอบ
Wai Ha Lee

@WaiHaLee ฉันไม่สามารถแก้ไขความคิดเห็นของฉันได้ แต่เนื่องจากฉันได้รับคำแนะนำสำหรับผู้ใช้ใหม่ฉันต้องการอธิบายว่าพยายามเพิ่มคำตอบด้วยคำอธิบายที่ชัดเจนยิ่งขึ้นเพื่อให้ผู้ใช้รายอื่นสามารถตรวจสอบได้ว่าทำไมคำตอบหรือรหัสนี้มีประโยชน์กับพวกเขา
Kirankumar Dafda

0

ในปลั๊กอิน 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.