跳至主要內容

gradle环境构建

wangdx大约 7 分钟

配置文件

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.6-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
#org.gradle,jvmargs=-Dfile.encoding=UTF-8
project_group=com.yix
project_version=1.0
project_jdk=17
ext.versions = [
        springboot        : '2.6.13',      // SpringBoot版本号
        springcloud       : '2021.0.5', // SpringCloud版本号
        alibabacloud      : '2021.0.5.0', // SpringCloudAlibaba版本号
        lombok            : '1.18.20', // Lombok版本号
        mapstruct         : '1.5.5.Final', // mapstruct转换版本号
        junit             : '5.9.3',          // 配置JUnit测试工具的版本编号
        junitPlatform     : '1.9.3',          // JUnit测试工具运行平台版本编号
        mysqlJ            : '8.0.33',          // MySQL驱动的版本
        druid             : '1.2.21',          // Druid版本
        springJdbc        : '5.3.31',          // SpringJDBC版本
        mybatis           : '3.5.7', // MyBatis的开发版本
        mybatisPlus       : '3.5.5', // MyBatisPlus依赖版本
        mybatisSpringBoot : '2.2.0', // Mybatis-SpringBoot整合依赖
        swagger           : '3.0.0', // Swagger版本号
        springdoc         : '2.4.0', // Swagger版本号
        springdocUi       : '1.7.0', // Swagger版本号
        knife4j           : '4.5.0', // knife4j版本号
        hutool            : '5.8.26', // hutool
        commonsLang3      : '3.12.0', // commonsLang3
        commonsIo         : '2.15.1', // commons-io
        commonsFileupload : '1.5', // commonsFileupload
        poiOoxml          : '5.2.5', // poiOoxml
        nacos             : '2.3.1', // Nacos版本号
        httpclient5       : '5.3.1', // httpclient5
        feignHc5          : '13.2.1', // httpclient5
        httpclient        : '4.5.13', // httpclient5
        feignHttpclient   : '11.8', // httpclient5
        sentinel          : '1.8.7', // Sentinel版本号
        caffeine          : '3.1.8', // Caffeine缓存组件版本号
        micrometer        : '1.12.4', // Prometheus相关监控依赖,与服务部署的版本号相同
        servlet           : '4.0.1', // Servlet的依赖库
        commonsCodec      : '1.15', // codec依赖库
        jjwt              : '0.9.1', // jwt依赖库
        jaxb              : '2.3.0', // JAXB依赖库
        admin             : '2.6.11', // SpringBootAdmin依赖版本
        rocketmq          : '5.2.0', // RocketMQ的依赖库版本
        scsRocketMQ       : '2021.1', // SpringCloudStream依赖库版本
        cloudSeata        : '2021.1',
        seata             : '2.0.0',
        hibernateValidator: '8.0.1.Final', // JSR303验证库
]
ext.libraries = [
        'spring-boot-gradle-plugin'           : "org.springframework.boot:spring-boot-gradle-plugin:${versions.springboot}",
        'spring-cloud-dependencies'           : "org.springframework.cloud:spring-cloud-dependencies:${versions.springcloud}",
        'spring-cloud-alibaba-dependencies'   : "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${versions.alibabacloud}",
        // 以下的配置为与项目用例测试有关的依赖
        'junit-jupiter-api'                   : "org.junit.jupiter:junit-jupiter-api:${versions.junit}",
        'junit-vintage-engine'                : "org.junit.vintage:junit-vintage-engine:${versions.junit}",
        'junit-jupiter-engine'                : "org.junit.jupiter:junit-jupiter-engine:${versions.junit}",
        'junit-platform-launcher'             : "org.junit.platform:junit-platform-launcher:${versions.junitPlatform}",
        'junit-platform-engine'               : "org.junit.platform:junit-platform-engine:${versions.junitPlatform}",
        'junit-jupiter-params'                : "org.junit.jupiter:junit-jupiter-params:${versions.junit}",
        'junit-bom'                           : "org.junit:junit-bom:${versions.junit}",
        'junit-platform-commons'              : "org.junit.platform:junit-platform-commons:${versions.junitPlatform}",
        // 以下的配置为Lombok组件有关的依赖
        'lombok'                              : "org.projectlombok:lombok:${versions.lombok}",
        //以下是mapstruct生成器相关配置
        'mapstruct'                           : "org.mapstruct:mapstruct:$versions.mapstruct",
        'mapstruct-processor'                 : "org.mapstruct:mapstruct-processor:$versions.mapstruct",
        // 以下的配置为数据库开发所需要的依赖:
        'mysql-connector-j'                   : "com.mysql:mysql-connector-j:${versions.mysqlJ}",
        'druid-spring-boot-starter'           : "com.alibaba:druid-spring-boot-starter:${versions.druid}",
        'druid'                               : "com.alibaba:druid:${versions.druid}",
        'mybatis'                             : "org.mybatis:mybatis:${versions.mybatis}",
        'mybatis-spring-boot-starter'         : "org.mybatis.spring.boot:mybatis-spring-boot-starter:${versions.mybatisSpringBoot}",
        'mybatis-plus'                        : "com.baomidou:mybatis-plus:${versions.mybatisPlus}",
        'mybatis-plus-boot-starter'           : "com.baomidou:mybatis-plus-boot-starter:${versions.mybatisPlus}",
        'spring-jdbc'                         : "org.springframework:spring-jdbc:${versions.springJdbc}",
        // 以下的配置为Swagger有关的依赖库
        'springfox-boot-starter'              : "io.springfox:springfox-boot-starter:${versions.swagger}",
        'springdoc-openapi-starter-webmvc-ui' : "org.springdoc:springdoc-openapi-starter-webmvc-ui:${versions.springdoc}",
        'springdoc-openapi-ui'                : "org.springdoc:springdoc-openapi-ui:${versions.springdocUi}",
        'knife4j-openapi2-spring-boot-starter': "com.github.xiaoymin:knife4j-openapi2-spring-boot-starter:${versions.knife4j}",
        'knife4j-openapi3-spring-boot-starter': "com.github.xiaoymin:knife4j-openapi3-spring-boot-starter:${versions.knife4j}",
        //hutoll工具包
        'hutool-all'                          : "cn.hutool:hutool-all:${versions.hutool}",
        'commons-lang3'                       : "org.apache.commons:commons-lang3:$versions.commonsLang3",
        'commons-io'                          : "commons-io:commons-io:$versions.commonsIo",
        'commons-fileupload'                  : "commons-fileupload:commons-fileupload:$versions.commonsFileupload",
        'poi-ooxml'                           : "org.apache.poi:poi-ooxml:$versions.poiOoxml",
        // 以下的配置为Nacos有关的依赖库
        'nacos-client'                        : "com.alibaba.nacos:nacos-client:${versions.nacos}",
        //httpclient5
        'httpclient'                          : "org.apache.httpcomponents:httpclient:${versions.httpclient}",
        'feign-httpclient'                    : "io.github.openfeign:feign-httpclient:${versions.feignHttpclient}",
        'httpclient5'                         : "org.apache.httpcomponents.client5:httpclient5:${versions.httpclient5}",
        'httpclient5-fluent'                  : "org.apache.httpcomponents.client5:httpclient5-fluent:${versions.httpclient5}",
        'feign-hc5'                           : "io.github.openfeign:feign-hc5:${versions.feignHc5}",
        // 以下的配置为Sentinel有关的组件依赖
        'sentinel-datasource-nacos'           : "com.alibaba.csp:sentinel-datasource-nacos:${versions.sentinel}",
        // 以下的配置为LoadBalancer所需要的Caffeine组件有关依赖
        'caffeine'                            : "com.github.ben-manes.caffeine:caffeine:${versions.caffeine}",
        // 以下的配置为Prometheus服务整合
        'micrometer-registry-prometheus'      : "io.micrometer:micrometer-registry-prometheus:${versions.micrometer}",
        'micrometer-core'                     : "io.micrometer:micrometer-core:${versions.micrometer}",
        // 以下的配置为JWT的服务整合
        'servlet-api'                         : "javax.servlet:javax.servlet-api:${versions.servlet}",
        'commons-codec'                       : "commons-codec:commons-codec:${versions.commonsCodec}",
        'jjwt'                                : "io.jsonwebtoken:jjwt:${versions.jjwt}",
        'jaxb-api'                            : "javax.xml.bind:jaxb-api:${versions.jaxb}",
        'jaxb-impl'                           : "com.sun.xml.bind:jaxb-impl:${versions.jaxb}",
        'jaxb-core'                           : "com.sun.xml.bind:jaxb-core:${versions.jaxb}",
        // 以下的配置为SpringBootAdmin服务整合
        'spring-boot-admin-starter-server'    : "de.codecentric:spring-boot-admin-starter-server:${versions.admin}",
        'spring-boot-admin-starter-client'    : "de.codecentric:spring-boot-admin-starter-client:${versions.admin}",
        // 以下的配置为RocketMQ相关服务的整合依赖
        'rocketmq-client'                     : "org.apache.rocketmq:rocketmq-client:${versions.rocketmq}",
        'rocketmq-acl'                        : "org.apache.rocketmq:rocketmq-acl:${versions.rocketmq}",
        // 以下的配置为RocketMQ与SpringCloudStream整合服务所需要的依赖:
        'spring-cloud-starter-stream-rocketmq': "com.alibaba.cloud:spring-cloud-starter-stream-rocketmq:${versions.scsRocketMQ}",
        // 以下的配置为Seata相关的依赖库
        'spring-cloud-starter-alibaba-seata'  : "com.alibaba.cloud:spring-cloud-starter-alibaba-seata:${versions.cloudSeata}",
        'seata-spring-boot-starter'           : "io.seata:seata-spring-boot-starter:${versions.seata}",
        // 以下的配置为HibernateValidator实现的JSR303验证标准依赖
        'hibernate-validator'                 : "org.hibernate.validator:hibernate-validator:${versions.hibernateValidator}",
]
buildscript {                        // 定义脚本使用资源
    apply from: 'dependencies.gradle' // 引入所需要的依赖库文件
    repositories {                        // 脚本资源仓库
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://repo.spring.io/libs-milestone' }
    }
    dependencies {                        // 依赖库
        classpath libraries.'spring-boot-gradle-plugin' // SpringBoot插件
    }
}
group project_group    // 组织名称
version project_version // 项目版本

apply from: 'dependencies.gradle' // 导入依赖配置
def env = System.getProperty("env") ?: 'dev'    // 获取env环境属性

subprojects {                    // 配置子项目
    apply plugin: 'java'                // 子模块插件
    apply plugin: 'java-library' // 引入之前的插件
    apply plugin: 'org.springframework.boot'    // 引入SpringBoot插件
    apply plugin: 'io.spring.dependency-management'    // 版本号管理
    sourceCompatibility = project_jdk        // 源代码版本
    targetCompatibility = project_jdk        // 生成类版本
    repositories {                // 配置Gradle仓库
        mavenLocal()                    // Maven本地仓库
        maven {                        // 阿里云仓库
            allowInsecureProtocol = true
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
        mavenCentral()                    // Maven远程仓库
    }
    dependencyManagement {// 版本控制插件
        imports {
            mavenBom libraries.'spring-cloud-dependencies' // SpringCloud依赖管理
            mavenBom libraries.'spring-cloud-alibaba-dependencies' // SpringCloudAlibaba依赖管理
        }
    }
    dependencies {                // 公共依赖库管理
        compileOnly('org.springframework.boot:spring-boot-devtools') // 项目热部署
        // 以下为测试环境的相关依赖配置
        testImplementation('org.springframework.boot:spring-boot-starter-test') {
            exclude group: 'junit', module: 'junit' // 移除Junit4
        }
        testImplementation(enforcedPlatform(libraries.'junit-bom')) // 绑定为JUnit5运行
        testImplementation(libraries.'junit-platform-commons') // Junit5测试组件
        testImplementation(libraries.'junit-platform-engine') // Junit5测试组件
        testImplementation(libraries.'junit-jupiter-api') // Junit5测试组件
        testImplementation(libraries.'junit-vintage-engine') // Junit5测试组件
        testImplementation(libraries.'junit-jupiter-engine') // Junit5测试组件
        testImplementation(libraries.'junit-platform-launcher') // Junit5测试组件
        // 以下为Lombok插件的相关依赖配置
        compileOnly(libraries.'lombok') // 编译时生效
        annotationProcessor(libraries.'lombok') // 注解时生效
        testCompileOnly(libraries.'lombok') // 注解时生效
        testAnnotationProcessor(libraries.'lombok') // 注解时生效

        implementation(libraries.'mapstruct')
        testAnnotationProcessor(libraries.'mapstruct-processor') // 注解时生效
        annotationProcessor(libraries.'mapstruct-processor')
    }
    sourceSets {                    // 源代码目录配置
        main {                    // main及相关子目录配置
            java { srcDirs = ['src/main/java'] }
            resources { srcDirs = ['src/main/resources', "src/main/profiles/$env"] }
        }
        test {                    // test及相关子目录配置
            java { srcDirs = ['src/test/java'] }
            resources { srcDirs = ['src/test/resources'] }
        }
    }
    test {                    // 配置测试任务
        useJUnitPlatform()                // 使用JUnit测试平台
    }
    task sourceJar(type: Jar, dependsOn: classes) { // 源代码的打包任务
        archiveClassifier = ''        // 设置文件的后缀
        from sourceSets.main.allSource        // 所有源代码的读取路径
    }
    task javadocTask(type: Javadoc) {        // JavaDoc文档打包任务
        options.encoding = 'UTF-8'            // 设置文件编码
        source = sourceSets.main.allJava        // 定义所有的Java源代码
    }
    task javadocJar(type: Jar, dependsOn: javadocTask) { // 先生成JavaDoc再打包
        archiveClassifier = 'javadoc'        // 文件标记类型
        from javadocTask.destinationDir        // 通过JavadocTask任务中找到目标路径
    }
    tasks.withType(Javadoc) {            // 文档编码配置
        enabled = false
        options.encoding = 'UTF-8'            // 定义编码
    }
    tasks.withType(JavaCompile) {        // 编译编码配置
        options.encoding = 'UTF-8'            // 定义编码
    }
    artifacts {                    // 最终的打包的操作任务
        archives sourceJar            // 源代码打包
        archives javadocJar            // javadoc打包
    }
    gradle.taskGraph.whenReady {            // 在所有的操作准备好后触发
        tasks.each { task ->                // 找出所有的任务
            if (task.name.contains('test')) {    // 如果发现有test任务
                // 如果将enabled设置为true表示要执行测试任务,如果设置为false表示不执行测试任务
                task.enabled = true
            }
        }
    }
    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'// 编码配置
}

project(":yix-common") {
    dependencies {
        api("org.springframework.boot:spring-boot-starter-web")
        annotationProcessor('org.springframework.boot:spring-boot-configuration-processor')
        api("org.springframework.boot:spring-boot-starter-validation")
        //swagger文档依赖
        api(libraries.'knife4j-openapi3-spring-boot-starter')
        //常用工具类
        api(libraries.'hutool-all')
        api(libraries.'commons-lang3')
        api(libraries.'commons-io')
        api(libraries.'commons-fileupload')
        api(libraries.'poi-ooxml')
        //多数据源依赖
        api(libraries.'mysql-connector-j')
        api(libraries.'druid')
        api(libraries.'spring-jdbc')
        api(libraries.'druid-spring-boot-starter')
        api('org.springframework.boot:spring-boot-starter-aop')
        api('org.springframework.boot:spring-boot-starter-actuator')
        //集成mybatisplus
        api(libraries.'mybatis-spring-boot-starter')
        api(libraries.'mybatis-plus')
    }
}
project(":yix-framwork") {
    dependencies {
        api(project(":yix-common"))
        api('org.springframework.boot:spring-boot-starter-jta-atomikos')
    }
}
project(":yix-admin") {
    dependencies {
        implementation(project(":yix-framwork"))
        implementation(project(":yix-examples"))
    }
}
project(":yix-examples") {
    dependencies {
        implementation(project(":yix-common"))
    }
}
jar { enabled = true } // 允许打包为jar文件
bootJar { enabled = false } // 不允许打包为Boot执行文件
javadocJar { enabled = false } // 不需要打包为jar文件
javadocTask { enabled = false } // 不需要打包为doc文件
gradle.taskGraph.whenReady {            // 在所有的操作准备好后触发
    tasks.each { task ->                // 找出所有的任务
        if (task.name.contains('test')) {    // 如果发现有test任务
            // 如果将enabled设置为true表示要执行测试任务,如果设置为false表示不执行测试任务
            task.enabled = false
        }
    }
}


上次编辑于: