Gradle สร้างเพียงหนึ่งโมดูล


152

ฉันมีการสร้างโมดูลหลายระดับ ฉันต้องการรันเป้าหมายสำหรับหนึ่งโมดูลโดยใช้รูท เช่น

gradle build -Pmodule=ABC
gradle jar -Pmodule=ABC
gradle test -Pmodule=ABC
gradle compileJava -Pmodule=ABC
gradle customTask -Pmodule=ABC
etc.

ดังนั้นทุกเป้าหมายสามารถรันได้จากรูทที่ระบุโมดูล มีวิธีง่าย ๆ ในการทำเช่นนี้?

ขอบคุณมาก!


if (project.hasProperty('module') && module.equals('ABC')) { // execute module ABC } .... นี่คือสิ่งที่คุณต้องการบรรลุ
pepuch

@puch คุณช่วยอธิบายได้ไหม? ฉันต้องการที่จะผลักดันการอัปเดตไปยังแอพของฉันซึ่งมี aar อยู่ในนั้น แต่เพื่อให้สร้างเฉพาะการเปลี่ยนแปลงในแอปโดยไม่ต้องสร้างห้องสมุดขึ้นใหม่
The_Martian

คำตอบ:


302

ในการดำเนินการงานของโครงการย่อยที่เฉพาะเจาะจงให้ระบุของเส้นทางงาน ตัวอย่างเช่น:

gradle :ABC:build

ผู้นำ:คือโครงการราก ABCเป็นโครงการย่อยและbuildงานในโครงการนั้น


4
คุณสามารถควบคุมผ่านการตั้งค่าแทนที่จะเป็นบรรทัดคำสั่งเพื่อรวบรวมหนึ่งโครงการย่อยจากหลาย ๆ โครงการได้อย่างไร สำหรับ Pipelines ที่วางจำหน่ายของ Google นั้นจะทำการปิด "ชุดประกอบการทำความสะอาดแบบไล่ระดับสี" ในโครงการรูท สำหรับฉันแล้วมันพยายามสร้าง AppEngine AND Android Release Pipeline จะล้มเหลวบน Android build เนื่องจากไม่มี SDK ที่ติดตั้งซึ่งสามารถเข้าใจได้สำหรับเครื่องชั่วคราว นอกจากนี้ดูเหมือนว่า Release Pipelines จะเสนอตัวเลือกการกำหนดค่าด้วย
brunobowden

ในกรณีของฉันโครงการรูทยังคงตรวจสอบและไฟข้อความแสดงข้อผิดพลาดฉันไม่ต้องการที่จะจัดการในเวลานี้ น่ารำคาญมาก
Wolfgang Fahl

gradle :ABC:clean :ABC:build
StanislavKo

gradle build -p moduleA ดีกว่ามันจะจัดการกับการพึ่งพาของโมดูล
จอห์น

84

พบวิธีที่รวดเร็ว

gradle build -p moduleA

moduleA เป็นไดเรกทอรีของโมดูล

คำสั่งข้างต้นสร้างmoduleAและทั้งหมด submodules และmoduleAควรเป็นเส้นทางของมัน


4
เหนือคำสั่งสร้าง moudleA และมัน submodule และ moduleA ควรจะเป็นของเส้นทาง gradle build -p path\pathSt\moduleA
Viraj

1
ฉันมี wrapper สำหรับโครงการย่อยที่ไม่มีไฟล์ gradle ของมัน ต่างจากคำตอบที่เลือกนี่เหมาะกับฉัน ขอบคุณสำหรับคำชี้แจงในความคิดเห็นคุณช่วยเพิ่มคำตอบได้ไหม?
Vlasec

24

บน Mac OS ตัวแปรเดียวที่ทำงานกับฉัน:

./gradlew  ABC:build

ABC เป็นชื่อของโมดูล

(มันอาจทำงานบน Linux ด้วย)


5

ป้อนคำอธิบายรูปภาพที่นี่

หาก IDE ของคุณเป็น Android Studio มีวิธีที่ง่ายเพียงเลือกโฟลเดอร์โมดูลที่คุณต้องการคอมไพล์แล้วคลิกสร้างและเลือกทำให้โมดูลเป็น 'โฟลเดอร์โมดูลของคุณ'

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