Gradle 构建SpringBoot多模块项目

1,382 阅读1分钟

Root project 主项目

settings.gradle

rootProject.name = "auto-test"
include 'lz-core'
include 'lz-web'

build.gradle

// 构建配置
buildscript {
    ext {
        java_version = '11'
        kotlin_version = '1.5.10'
        spring_boot_version = '2.5.1'
        spring_gradle_plugin_version = '1.0.11.RELEASE'
    }

    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://plugins.gradle.org/m2/' }
        mavenCentral()
    }

    dependencies {
        // https://plugins.gradle.org/search?term=org.jetbrains.kotlin%3Akotlin-gradle-plugin
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        // https://kotlinlang.org/docs/all-open-plugin.html#spring-support
        classpath "org.jetbrains.kotlin:kotlin-allopen:$kotlin_version"
        // 一个提供类似 Maven 依赖管理功能的 Gradle 插件 https://plugins.gradle.org/plugin/io.spring.dependency-management
        classpath "io.spring.gradle:dependency-management-plugin:$spring_gradle_plugin_version"
        // https://plugins.gradle.org/plugin/org.springframework.boot
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version"

    }
}


// all项目配置
allprojects {
    group = 'com.lz.auto-test'
    version = '0.0.1-SNAPSHOT'

    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://plugins.gradle.org/m2/' }
        mavenCentral()
    }
}

// 子项目配置
subprojects {
    apply plugin: 'kotlin'
    apply plugin: "kotlin-spring"
    apply plugin: "io.spring.dependency-management"
    apply plugin: "org.springframework.boot"

    sourceCompatibility = java_version
    targetCompatibility = java_version

    compileKotlin {
        kotlinOptions {
            suppressWarnings = true // 不生成警告
            verbose = true // 启用详细日志输出
            freeCompilerArgs = ["-Xjsr305=strict"] // 附加编译器参数的列表
            jvmTarget = java_version //生成的 JVM 字节码的目标版本
            javaParameters = true   //为方法参数生成 Java 1.8 反射的元数据
        }
    }

    dependencies {

    }

    dependencyManagement {
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:$spring_boot_version"
        }
    }
}

Sub Projects 子项目

非可执行jar

// bootJar: 打包的是可执行的jar, 模块只是依赖文件, 并不需要, 可以将其禁用, 否者 build 时会出错获取不到
bootJar {
    enabled = false
}

dependencies {
    compileOnly 'org.projectlombok:lombok'
}

可执行jar

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
    implementation 'org.jetbrains.kotlin:kotlin-reflect'
    implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'

    implementation 'com.lz.auto-test:lz-core:0.0.1-SNAPSHOT'
}