Skip to content

多项目构建基础

多项目构建允许将大型项目拆分为多个子模块,每个模块独立管理,同时共享版本、依赖和构建配置。

项目结构

company-app/
├── settings.gradle.kts        ← 声明所有子项目(必须)
├── build.gradle.kts           ← 根项目(共享配置)
├── gradle/
│   ├── wrapper/...
│   └── libs.versions.toml     ← 统一版本目录
├── gradlew / gradlew.bat

├── core/                      ← 核心业务库
│   ├── build.gradle.kts
│   └── src/...

├── common/                    ← 公共工具库
│   ├── build.gradle.kts
│   └── src/...

├── service/
│   ├── auth/                  ← 认证服务
│   │   ├── build.gradle.kts
│   │   └── src/...
│   └── order/                 ← 订单服务
│       ├── build.gradle.kts
│       └── src/...

└── web/                       ← Web 应用
    ├── build.gradle.kts
    └── src/...

settings.gradle.kts

kotlin
// settings.gradle.kts
rootProject.name = "company-app"

// 插件管理(全局统一)
pluginManagement {
    repositories {
        gradlePluginPortal()
        mavenCentral()
    }
}

// 依赖仓库管理(推荐统一配置)
dependencyResolutionManagement {
    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        mavenCentral()
    }
}

// 声明子项目
include(
    "core",
    "common",
    "service:auth",
    "service:order",
    "web"
)

根项目 build.gradle.kts

kotlin
// 根项目 build.gradle.kts

// 所有项目的公共配置
allprojects {
    group = "com.example"
    version = "1.0.0"
}

// 所有子项目的公共配置
subprojects {
    apply(plugin = "java")
    
    java {
        sourceCompatibility = JavaVersion.VERSION_17
        targetCompatibility = JavaVersion.VERSION_17
    }
    
    tasks.withType<JavaCompile> {
        options.encoding = "UTF-8"
    }
    
    tasks.withType<Test> {
        useJUnitPlatform()
    }
    
    // 子项目通用依赖
    dependencies {
        "testImplementation"(platform("org.junit:junit-bom:5.10.1"))
        "testImplementation"("org.junit.jupiter:junit-jupiter")
        "testRuntimeOnly"("org.junit.platform:junit-platform-launcher")
    }
}

子项目 build.gradle.kts

kotlin
// core/build.gradle.kts
plugins {
    `java-library`
}

dependencies {
    api("org.slf4j:slf4j-api:2.0.9")
    implementation("com.google.guava:guava:32.0.1-jre")
}
kotlin
// web/build.gradle.kts
plugins {
    java
    id("org.springframework.boot") version "3.2.0"
    id("io.spring.dependency-management") version "1.1.4"
}

dependencies {
    implementation(project(":core"))          // 依赖 core 模块
    implementation(project(":common"))        // 依赖 common 模块
    implementation("org.springframework.boot:spring-boot-starter-web")
}

常用命令

bash
# 构建所有子项目
./gradlew build

# 只构建 core 子项目
./gradlew :core:build

# 只构建 service:auth 子项目
./gradlew :service:auth:build

# 查看所有子项目
./gradlew projects

# 查看特定子项目的任务
./gradlew :web:tasks

# 并行构建(大型多项目时加速)
./gradlew build --parallel

下一步