基于gradle的dependency-management配置实现多模块springboot依赖库的版本管理

config.gradle(依赖版本配置)

// 依赖版本管理
ext {
    version = [
            "springBootVersion" : "2.3.7.RELEASE",
            "fastjsonVersion"   : "1.2.72",
            "lombokVersion"     : "1.18.12",
            "commonsLangVersion": "2.6",
            "jodaTimeVersion"   : "2.10.5",
            "MPVersion"         : "3.4.2",
            "JWTVersion"        : "3.12.0",
            "jdk15onVersion"    : "1.65",
            "jasyptVersion"     : "2.0.0",
            "captchaVersion"    : "1.6.2",
            "ehcacheVersion"    : "2.10.6",
            "hutoolVersion"     : "5.5.8",
            "ajCaptchaVersion"  : "1.2.8",
    ]

    dependencies = [
            "fastjson"                      : "com.alibaba:fastjson:${version.fastjsonVersion}",
            "lombok"                        : "org.projectlombok:lombok:${version.lombokVersion}",
            "commons-lang"                  : "commons-lang:commons-lang:${version.commonsLangVersion}",
            "joda-time"                     : "joda-time:joda-time:${version.jodaTimeVersion}",
            "mybatis-plus-boot-starter"     : "com.baomidou:mybatis-plus-boot-starter:${version.MPVersion}",
            "java-jwt"                      : "com.auth0:java-jwt:${version.JWTVersion}",
            "bcprov-jdk15on"                : "org.bouncycastle:bcprov-jdk15on:${version.jdk15onVersion}",
            "bcpkix-jdk15on"                : "org.bouncycastle:bcpkix-jdk15on:${version.jdk15onVersion}",
            "jasypt-spring-boot-starter"    : "com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.3",
            "druid-spring-boot-starter"     : "com.alibaba:druid-spring-boot-starter:1.1.17",

            "mysql"                         : "mysql:mysql-connector-java:8.0.11",
            "oracle"                        : "com.oracle:ojdbc6:11.2.0.3",
            "sqlserver"                     : "com.microsoft.sqlserver:sqljdbc4:4.0",
            "postgresql"                    : "org.postgresql:postgresql:42.2.18",
            "mongo"                         : "org.mongodb:mongo-java-driver:3.11.0",

            "easy-captcha"                  : "com.github.whvcse:easy-captcha:${version.captchaVersion}",
            "ehcache"                       : "net.sf.ehcache:ehcache:${version.ehcacheVersion}",
            "commons-configuration"         : "commons-configuration:commons-configuration:1.10",
            "velocity"                      : "org.apache.velocity:velocity:1.7",
            "commons-io"                    : "commons-io:commons-io:2.4",
            "pagehelper-spring-boot-starter": "com.github.pagehelper:pagehelper-spring-boot-starter:1.3.0",
            "hutool-all"                    : "cn.hutool:hutool-all:${version.hutoolVersion}",
            "ajCaptcha"                    : "com.anji-plus:spring-boot-starter-captcha:${version.ajCaptchaVersion}",
    ]
}

build.gradle(父模块)

plugins {
    id 'org.springframework.boot' version '2.3.7.RELEASE'
    id 'io.spring.dependency-management' version '1.0.10.RELEASE'
}

apply from: "config.gradle"
// 所有模块/项目的通用配置
allprojects {
    group = 'com.smile'
    version = '0.0.1'
    apply plugin: 'io.spring.dependency-management'
    repositories {
//maven仓库
        mavenLocal()
        maven { url 'https://maven.aliyun.com/nexus/content/groups/public' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/google' }
        maven { url 'https://maven.aliyun.com/nexus/content/repositories/jcenter' }
        mavenCentral()
    }
}
// 子模块/项目的统一配置
subprojects {
    apply plugin: 'java'
    // 指定JDK版本
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
    // 指定编码格式
    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'

    // dependencyManagement版本统一管理,类似于父maven的dependencyManagement
    dependencyManagement {
        dependencies {
            for(depJar in rootProject.ext.dependencies){
                dependency depJar.value
            }
        }
    }

    // 子项目依赖,类似于在父maven的dependencies 
    dependencies {
        //lombok
        annotationProcessor 'org.projectlombok:lombok'
        compileOnly 'org.projectlombok:lombok'
        testAnnotationProcessor 'org.projectlombok:lombok'
        testCompileOnly 'org.projectlombok:lombok'

        compile "com.alibaba:fastjson"
        compile "commons-lang:commons-lang"
        implementation(enforcedPlatform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES))
        compile 'org.springframework.boot:spring-boot-starter-web'
        compile 'org.springframework.boot:spring-boot-starter-log4j2'
        compile 'org.springframework.boot:spring-boot-starter-validation'
        compile ('org.springframework.boot:spring-boot-starter-test')
        compile (rootProject.ext.dependencies["mybatis-plus-boot-starter"]){
            exclude group: 'com.baomidou', module: 'mybatis-plus-generator'
        }
    }
    configurations {
        //移除spring boot 默认logger依赖
        all*.exclude module: 'spring-boot-starter-logging'
    }
}

子模块直接使用即可,无需写版本号:

dependencies {
    compile project(":smile-common")
    compile project(":smile-security")
    compile project(":smile-sys")
    compile "com.alibaba:druid-spring-boot-starter"
    compile "mysql:mysql-connector-java"
}

补充:

打war包配置

buildscript {
    ext {
        springBootVersion = '2.3.7.RELEASE'
    }
    repositories {
        maven {
            url 'https://maven.aliyun.com/repository/public'
        }
        mavenCentral();
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath 'com.github.shalousun:smart-doc-gradle-plugin:2.0.7-release'
    }
}
apply plugin: 'org.springframework.boot'
apply plugin: 'war'

bootWar {
    archiveFileName='security.war'
}

打jar包配置

buildscript {
    ext {
        springBootVersion = '2.3.7.RELEASE'
    }
    repositories {
        maven {
            url 'https://maven.aliyun.com/repository/public'
        }
        mavenCentral();
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath 'com.github.shalousun:smart-doc-gradle-plugin:2.0.7-release'
    }
}
apply plugin: 'org.springframework.boot'

smartdoc配置

apply plugin: 'com.github.shalousun.smart-doc'
smartdoc {
    configFile = file("src/main/resources/smart-doc.json")

    // exclude example
    // exclude artifact
    exclude 'org.springframework.boot:spring-boot-starter-tomcat'
    // exclude artifact use pattern
    exclude 'org.springframework.boot.*'
    // 你可以使用include配置来让插件自动加载指定依赖的source.
    include 'org.springframework.boot:spring-boot-starter-tomcat'
}

项目层级

 

Learn how to use Gradle's powerful dependency management through extensive code samples, and discover how to define, customize, and deploy dependencies About This Book Be in total control of your dependencies Deploy your artifacts to repositories with Gradle Learn through code snippets and real-life examples Who This Book Is For If you work on Java projects, use Gradle as a build automation tool, and you use dependencies in your project, this is the book for you. Additionally, if you want to deploy your project artifacts as dependencies for other developers using Gradle, you've found the right book. In Detail Gradle is the next generation in build automation. It allows you to define dependencies for your project in a clear way and also customize how they are resolved to suit your needs. It offers fine-grained control over how to publish your artifacts to Maven and Ivy repositories. Gradle Dependency Management defines dependencies for your Java-based project and customizes how they are resolved. You will learn how to configure the publication of artifacts to different repositories. Packed with plenty of code samples, you will understand how to define the repositories that contain dependencies. Following this, you will learn how to customize the dependency resolution process in Gradle. Table of Contents Chapter 1. Defining Dependencies Chapter 2. Working with Repositories Chapter 3. Resolving Dependencies Chapter 4. Publishing Artifacts Chapter 5. Publishing to a Maven Repository Chapter 6. Publishing to Bintray Chapter 7. Publishing to an Ivy Repository
### 使用 Gradle 构建 Spring Boot 多模块项目的设置与配置 #### 创建多模块项目结构 为了创建一个多模块Spring Boot 项目,首先需要定义一个父级 `build.gradle` 文件来管理子模块之间的依赖关系和共享属性。 ```groovy // build.gradle (根目录) plugins { id 'org.springframework.boot' version '3.0.0' id 'io.spring.dependency-management' version '1.1.0' } allprojects { group = 'com.example' version = '0.0.1-SNAPSHOT' repositories { mavenCentral() } } ``` 对于每个子模块,在各自的 `build.gradle` 中应用相应的插件并声明特定于该模块的依赖项: ```groovy // library/build.gradle apply plugin: 'java-library' dependencies { implementation('org.springframework.boot:spring-boot-starter') } ``` ```groovy // application/build.gradle apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' dependencies { implementation project(':library') testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } } ``` 此配置允许应用程序模块访问库模块中的类和服务[^1]。 #### 配置开发工具(DevTools) 当使用 Spring Boot 的开发者工具包时,默认情况下会忽略某些名称下的项目更改触发重启机制。这有助于提高开发效率,因为频繁修改这些内部框架组件不会导致不必要的重新启动过程[^2]。 #### 实现依赖注入 通过构造函数或 setter 方法实现对象间的依赖关系绑定是 Spring 容器管理 bean 生命周期的一部分。这种方式不仅提高了代码可测试性和灵活性,还增强了类型安全性[^3]。 #### 设置 Maven Archetype(如果适用) 如果有计划扩展到其他技术栈比如 TIBCO BusinessWorks,则可以考虑基于现有的 Maven 原型模板快速搭建基础架构。例如,指定继承自某个预设好的父POM文件可以帮助统一管理和定制化多个业务工作流项目的公共配置[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值