Groovy & Gradle: JVM Automation and Build Engineering · درس

المشاريع الفرعية والإعدادات

عرّف المشاريع الفرعية واضبطها، وافهم كيفية تفاعلها ضمن عملية بناء متعددة المشاريع

الدرس 2 من 411 خطوة

المشاريع الفرعية والإعدادات درس مجاني في Groovy & Gradle: JVM Automation and Build Engineering على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Groovy & Gradle: JVM Automation and Build Engineering، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Groovy & Gradle: JVM Automation and Build Engineering 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

Welcome to Subprojects!

In large software projects, keeping everything in one giant build file can get messy. This is where subprojects come in handy!

Subprojects allow you to break down a big project into smaller, manageable modules. Think of them as mini-projects living within your main project.

  • Modularity: Organize code logically.
  • Reusability: Share common logic across modules.
  • Faster Builds: Gradle can optimize builds by only working on changed subprojects.

Declaring Subprojects

To tell Gradle about your subprojects, you use the settings.gradle file. This file lives in your root project directory.

You use the include keyword, followed by the path to your subproject's directory. Each subproject usually resides in its own folder.

/* settings.gradle */
rootProject.name = 'my-multi-project'

include 'app'
include 'library'

Subproject Directory Structure

Once declared in settings.gradle, your project structure will typically look like this:

  • my-multi-project/ (root project)
    • settings.gradle
    • build.gradle (root build file)
    • app/ (subproject 1)
      • build.gradle
      • ... (source code, resources)
    • library/ (subproject 2)
      • build.gradle
      • ... (source code, resources)

Each subproject gets its own build.gradle file.

Subproject Build Files

Just like your root project, each subproject has its own build.gradle file. This allows you to define specific configurations, dependencies, and tasks for that particular module.

For example, your app subproject might build a runnable application, while your library subproject might produce a reusable JAR.

/* library/build.gradle */
plugins {
    id 'java'
}

group 'com.coddykit'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

Defining a Subproject Task

You can define tasks within a subproject's build.gradle file. These tasks are then specific to that subproject.

Let's add a simple task to our library subproject that prints a message.

/* library/build.gradle */
plugins {
    id 'java'
}

group 'com.coddykit'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

task helloLibrary {
    doLast {
        println "Hello from the Library subproject!"
    }
}

Executing Subproject Tasks

To run a task belonging to a specific subproject from the root directory, you use a colon : to separate the subproject name and the task name.

For example, to run the helloLibrary task from our library subproject:

public class Main {
  public static void main(String[] args) {
    System.out.println("To run the task: gradle :library:helloLibrary");
    System.out.println("Output will be: Hello from the Library subproject!");
  }
}

Common Configuration: allprojects

Sometimes, you want to apply the same configuration to all projects in your multi-project build (the root project and all its subprojects).

You can do this using the allprojects { ... } block in your root build.gradle file.

/* build.gradle (root) */

allprojects {
    group 'com.coddykit.common'
    version '1.0.0'

    repositories {
        mavenCentral()
    }
}

Targeting Specific Subprojects

While allprojects is great for common settings, you often need to configure individual subprojects from the root build file.

You can use the project(':subprojectName') { ... } block to apply configuration specifically to one subproject.

/* build.gradle (root) */

project(':app') {
    apply plugin: 'application'
    mainClassName = 'com.coddykit.app.MainApp'
}

project(':library') {
    apply plugin: 'java-library'
}

Sharing Properties

You can also share properties or variables from your root project to all subprojects. This is useful for things like consistent version numbers or build flags.

Use the ext block (for "extra properties") in the root build.gradle and access it with rootProject.ext.propertyName in subprojects.

/* build.gradle (root) */
ext {
    groovyVersion = '3.0.9'
    springBootVersion = '2.7.5'
}

allprojects {
    // Access properties in subprojects
    println "Groovy Version: ${rootProject.ext.groovyVersion}"
}

Multi-Select Check

Which of the following statements about Gradle subprojects and their configuration are TRUE?

Subprojects Recap

Great job! You've learned the basics of setting up and configuring Gradle subprojects.

  • Subprojects help organize large builds.
  • They are declared in settings.gradle using include.
  • Each subproject has its own build.gradle.
  • You can configure all projects using allprojects { ... } or specific ones using project(':name') { ... }.
  • Tasks are run with the :subproject:task syntax.

Next, we'll explore how subprojects can depend on each other!

البدء مجانًا

تعلم Groovy مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
12
الدروس
48

الأسئلة الشائعة

هل درس «المشاريع الفرعية والإعدادات» مجاني؟

نعم — نص درس «المشاريع الفرعية والإعدادات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Groovy & Gradle: JVM Automation and Build Engineering، انتقل إلى CoddyKit PRO. تتضمن دورة Groovy & Gradle: JVM Automation and Build Engineering 4 دروس في المجموع.

ماذا ستتعلم في «المشاريع الفرعية والإعدادات»؟

عرّف المشاريع الفرعية واضبطها، وافهم كيفية تفاعلها ضمن عملية بناء متعددة المشاريع تتمرن على Groovy & Gradle: JVM Automation and Build Engineering مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Groovy & Gradle: JVM Automation and Build Engineering؟

لا تُشترط خبرة سابقة. Groovy & Gradle: JVM Automation and Build Engineering على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «المشاريع الفرعية والإعدادات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Groovy & Gradle: JVM Automation and Build Engineering هذا؟

نعم. كل درس في Groovy & Gradle: JVM Automation and Build Engineering يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. بنية مشروع Monorepo
  2. المشاريع الفرعية والإعدادات
  3. التبعيات بين المشاريع
  4. عمليات البناء المركبة وتركيب البناء
← العودة إلى Groovy & Gradle: JVM Automation and Build Engineering