Gradle - สร้างหลายโครงการ

Gradle สามารถจัดการโครงการที่เล็กที่สุดและใหญ่ที่สุดได้อย่างง่ายดาย โครงการขนาดเล็กมีไฟล์บิลด์เดียวและแผนผังแหล่งที่มา เป็นเรื่องง่ายมากที่จะสรุปและทำความเข้าใจโครงการที่ถูกแบ่งออกเป็นโมดูลขนาดเล็กที่ต้องพึ่งพาระหว่างกัน Gradle รองรับสถานการณ์นี้อย่างสมบูรณ์แบบซึ่งเป็นการสร้างหลายโครงการ

โครงสร้างสำหรับการสร้างหลายโครงการ

งานสร้างดังกล่าวมีทุกรูปทรงและขนาด แต่มีลักษณะทั่วไปบางประการ -

  • settings.gradle ไฟล์ในไดเร็กทอรีรูทหรือมาสเตอร์ของโปรเจ็กต์

  • build.gradle ไฟล์ในไดเร็กทอรี root หรือ master

  • ไดเรกทอรีย่อยที่มีของตัวเอง *.gradle สร้างไฟล์ (บิวด์หลายโปรเจ็กต์บางตัวอาจละเว้นสคริปต์การสร้างโปรเจ็กต์ลูก)

สำหรับการแสดงรายการโปรเจ็กต์ทั้งหมดในไฟล์บิลด์คุณสามารถใช้คำสั่งต่อไปนี้

C:\> gradle -q projects

เอาท์พุต:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'projectReports'
+--- Project ':api' - The shared API for the application
\--- Project ':webapp' - The Web application implementation

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :api:tasks

รายงานจะแสดงคำอธิบายของแต่ละโครงการหากระบุไว้ คุณสามารถใช้คำสั่งต่อไปนี้เพื่อระบุคำอธิบาย วางลงในไฟล์build.gradle ไฟล์.

description = 'The shared API for the application'

การระบุการกำหนดค่าการสร้างทั่วไป

ใน build.gradle ไฟล์ใน root_project การกำหนดค่าทั่วไปสามารถใช้กับโปรเจ็กต์ทั้งหมดหรือเฉพาะกับโปรเจ็กต์ย่อย

allprojects {
   group = 'com.example.gradle'
   version = '0.1.0'
}

subprojects {
   apply plugin: 'java'
   apply plugin: 'eclipse'
}

สิ่งนี้ระบุทั่วไป com.example.gradle กลุ่มและ 0.1.0เวอร์ชันสำหรับโครงการทั้งหมด subprojects การปิดใช้การกำหนดค่าทั่วไปสำหรับโปรเจ็กต์ย่อยทั้งหมด แต่ไม่ใช่กับโปรเจ็กต์รูทเช่นไฟล์ allprojects ปิดไม่

การกำหนดค่าเฉพาะโครงการและการอ้างอิง

แกน ui และ util โครงการย่อยสามารถมีของตัวเองได้ build.gradle ถ้าพวกเขามีความต้องการเฉพาะซึ่งยังไม่ได้ใช้โดยการกำหนดค่าทั่วไปของโครงการรูท

ตัวอย่างเช่นโครงการ ui มักจะมีการพึ่งพาโครงการหลัก ดังนั้นโครงการ ui จึงต้องการของตัวเองbuild.gradle ไฟล์เพื่อระบุการอ้างอิงนี้

dependencies {
   compile project(':core')
   compile 'log4j:log4j:1.2.17'
}

การอ้างอิงโครงการถูกระบุด้วยวิธีการของโครงการ