โดยปกติเมื่อฉันสร้างโครงการโดยใช้ Maven ฉันแบ่งโครงการแอปพลิเคชันออกเป็นโมดูลขนาดเล็กหลายตัว
โครงการ Gradle ยังมีส่วนประกอบมากกว่าหนึ่งองค์ประกอบซึ่งเราเรียกว่า Builds หลายโครงการ
ก่อนอื่นเราสร้างงานสร้างหลายโครงการ:
mkdir cmdgradleproj && cd cmdgradleprojgradle init
ในเวลานี้
d: /cmdgradleproj> ดำเนินการในไดเรกทอรี: tree /f
โครงสร้างโครงการมีดังนี้:
│build.gradle│gradlew│gradlew.bat│การตั้งค่าgradle│─.gradle│─3.0││taskartifacts│แคชproperties│แคช. taskartifacts.bin│└─gradle└─Wrapper gradle-wrapper.jar gradle-wrapper.properties
จากนั้นสร้างหลายโมดูล ที่นี่ใช้โมดูลหลักและเว็บเป็นตัวอย่างและสร้างไดเรกทอรีสี่ไดเรกทอรีแรก (โฟลเดอร์ทดสอบใช้ในการเขียนคลาสทดสอบ):
mkdir core/src/main/javamkdir core/src/main/testmkdir web/src/main/javamkdir web/src/main/resources
โมดูลหลัก: มีส่วนประกอบทั่วไปบางอย่างที่สามารถใช้งานได้โดยโมดูลอื่น ๆ ของโปรแกรม ในตัวอย่างมีเพียงคลาสเดียวเท่านั้น: คลาส Messageservice ส่งคืน 'Hello World!' สตริง โมดูลนี้มีสองการพึ่งพา: Junit 4.11 และ Commons-Lang3
เว็บโมดูล: โมดูลมีคลาส HelloWorld ซึ่งเป็นจุดเริ่มต้นของโปรแกรม มันได้รับข้อมูลจากวัตถุ Messageservice และเขียนข้อมูลที่ได้รับลงในไฟล์บันทึก โมดูลมีสองการพึ่งพา: ต้องใช้โมดูลหลักและยังใช้ log4j เป็นบันทึก
ตอนนี้เราได้สร้างไดเรกทอรีที่ต้องการขั้นตอนต่อไปคือการกำหนดค่าการสร้าง Gradle ก่อนกำหนดโครงการที่รวมอยู่ในการสร้างหลายโครงการ
เราสามารถกำหนดค่าโครงการที่รวมอยู่ในการสร้างหลายโครงการผ่านขั้นตอนต่อไปนี้:
1. สร้างไฟล์ settings.gradle ในไดเรกทอรีรูทของโครงการรูท การสร้าง Gradle หลายโครงการต้องมีไฟล์นี้เนื่องจากระบุโครงการเหล่านั้นที่รวมอยู่ในการสร้างหลายโครงการ
2. ตรวจสอบให้แน่ใจว่าโครงการเว็บและหลักรวมอยู่ในงานสร้างหลายโครงการของเรา
ไฟล์ settings.gradle ของเรามีดังนี้:
รวม 'core'
รวม 'เว็บ'
ตัวย่อ: รวม 'core', 'เว็บ'
แก้ไข build.gradle ในไดเรกทอรีราก:
// การกำหนดค่าทั่วไปของโครงการย่อยทั้งหมดย่อย {ใช้ปลั๊กอิน: 'java' // ใช้ปลั๊กอิน: 'Eclipse' ใช้ปลั๊กอิน: 'Idea' เวอร์ชัน = '1.0' // หมายเลขเวอร์ชัน JVM ต้องใช้ sourcecompatibility = 1.8 TargetCompatibility = 1.8 // javadoc]*. ตัวเลือก*.ENCODING = 'UTF-8' // กำหนดหมายเลขเวอร์ชัน ext {SpringVersion = '4.3.3.release' hibernateVersion = '5.2.2.final'} repositories {mavencentral ()} jar {manifest {attributes ถูกกำหนดไว้ที่นี่ทั้งหมด*. exclude กลุ่ม: 'Commons-httpClient' ทั้งหมด*. exclude กลุ่ม: 'commons-logging' ทั้งหมด*. exclude กลุ่ม: 'Commons-beanutils', โมดูล: 'Commons-Beanutils'} การพึ่งพาอาศัยกัน "org.springframework: Spring-orm: $ Springversion", "org.springframework: Spring-tx: $ Springversion", "org.springframework.data:spring-data-jpa:1.10.3. "C3P0: C3P0: 0.9.1.2", "MySQL: MySQL-connector-Java: 6.0.4", "org.slf4j: SLF4J-NOP: 1.7.21", "Commons-FileUpload: Commons-FileUpload: 1.3.2" // ขึ้นอยู่กับขวดที่ไม่มีอยู่ใน maven ext.jartree = filetree (dir: 'libs', รวม: '**/*. jar') ext.rootprojectlibs = ไฟล์ใหม่ (rootproject.rootdir, 'libs') jartree // ทดสอบการทดสอบการทดสอบ ("org.springframework: การทดสอบฤดูใบไม้ผลิ: $ springversion", "Junit: Junit: 4.12")} // แสดงขวดทั้งหมดสำหรับการรวบรวมภายใต้โครงการปัจจุบัน งาน listjars (คำอธิบาย: 'แสดงขวดคอมไพล์ทั้งหมด') << {configurations.compile.each {ไฟล์ไฟล์ -> println file.name}}}ถัดไปคุณสามารถแก้ไข Core/build.gradle เพื่อกำหนดการพึ่งพาของโมดูลหลัก:
// ชื่อของ jar package archivesbasename = 'core' // การกำหนดค่าอื่น ๆ ยังสามารถกำหนดได้ ที่นี่การกำหนดค่าในโมดูลพาเรนต์โดยตรงสืบทอดการกำหนดค่าของโมดูลเว็บจำเป็นต้องพึ่งพาโมดูลหลักดังนั้นเว็บ/build.gradle ถูกกำหนดไว้ดังนี้: ใช้ปลั๊กอิน: "สงคราม" การพึ่งพา {// // การพึ่งพาโมดูลคอมไพล์สปริง: "org.apache.taglibs: taglibs-standard-impl: 1.2.1") // การพึ่งพาที่จัดทำโดยระบบจัดเตรียมการคอมไพล์ ("javax.servlet: Javax.servlet-Api: 3.1.0", "Javax.servlet.jsp: JSP-API: "javax.servlet.jsp.jstl: javax.servlet.jsp.jstl-api: 1.2.1")} งาน jarwithoutresources (ประเภท: jar) {basename project.name จาก ("$ builddir/classes/main")} สงคราม "*.properties" ลงใน ("Web-inf/classes")} classPath = classpath-sourcesets.main.output classpath filetree (dir: libsdir รวมถึง: "$ {project.name}-$ {เวอร์ชัน} .jar") } println (); -3. รวบรวมโครงการ
ดูขวดทั้งหมด:
> gradle listjars // ดูการพึ่งพาของแต่ละโมดูล:> Gradle: core: การพึ่งพา> gradle: เว็บ: การพึ่งพา // รวบรวมโมดูลทั้งหมด:> gradle build
เปรียบเทียบไดเรกทอรีในเวลานี้ดังนี้:
│build.gradle│gradlew│gradlew.bat│การตั้งค่า. gradle│segturbradle│──3.0││──TaskArtifacts│cache.properties│cache.properties.lock│filehashes.bin│filesnapshots.bin│ taskartifacts.bin│───Core│build.gradle│───Build│──LIBS│LIBS│-│││││││││││││││││││ │││││││ └ดุjava│───JAVA│THJAVA│THTTREEPJAVA│THJAR│THOUTHOUTHOUTESORCINE └───Resources
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น