gradle springboot多模块基本写法

1 篇文章 0 订阅
这是一个关于Gradle配置的详细示例,用于构建一个多模块的Spring Boot项目。它包括了父模块、子模块的配置,如依赖管理、插件应用、版本控制、时间戳插入、仓库设置等。此外,还展示了如何在子模块中引用共同的依赖,并定义特定的构建任务。
摘要由CSDN通过智能技术生成

父模块

import java.time.OffsetDateTime
import java.time.format.DateTimeFormatter

buildscript {
    repositories {
        mavenLocal()
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
        mavenCentral()
        // grandle插件
        maven {
            url 'https://plugins.gradle.org/m2/'
        }
    }

    ext {
        springBootVersion = '2.2.6.RELEASE'
    }
}
plugins {
    id 'java'
    id 'java-library'
    // 有这个声明,子模块可以使用org.springframework.boot插件而无需指定版本,但是apply=false表示当前模块不使用此插件
    id 'org.springframework.boot' version "${springBootVersion}" apply false
    id 'io.spring.dependency-management' version "1.0.11.RELEASE"
}

wrapper{
    gradleVersion = '6.7'
}
// 取当前时间
def buildTimeAndDate = OffsetDateTime.now()

// 根据时间生成字符串变量
ext {
    projectVersion = project.version
    buildDate = DateTimeFormatter.ISO_LOCAL_DATE.format(buildTimeAndDate)
    buildTime = DateTimeFormatter.ofPattern('HH:mm:ss.SSSZ').format(buildTimeAndDate)
}

allprojects {
    group 'org.github.hoorf'
    version '1.0-SNAPSHOT'

    apply plugin: 'java'
    apply plugin: 'idea'
    apply plugin: 'io.spring.dependency-management'

    // 编译相关参数
    compileJava {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
        options.encoding = 'UTF-8'
//        options.compilerArgs = [
//                '-Xlint:all', '-Xlint:-processing'
//        ]
    }

    // Copy LICENSE
    tasks.withType(Jar) {
        from(project.rootDir) {
            include 'LICENSE'
            into 'META-INF'
        }
    }

    // 生成jar文件时,MANIFEST.MF的内容如下
    jar {
        manifest {
            attributes(
                    'Created-By': "${System.properties['java.version']} (${System.properties['java.vendor']} ${System.properties['java.vm.version']})".toString(),
                    'Built-By': 'travis',
                    'Build-Date': buildDate,
                    'Build-Time': buildTime,
                    'Built-OS': "${System.properties['os.name']}",
                    'Specification-Title': project.name,
                    'Specification-Version': project.version,
                    'Specification-Vendor': 'test author',
                    'Implementation-Title': project.name,
                    'Implementation-Version': project.version,
                    'Implementation-Vendor': 'test author'
            )
        }
    }

    // 仓库
    repositories {
        // 本地
        mavenLocal()
        // 阿里云
        maven {
            url 'http://maven.aliyun.com/nexus/content/groups/public/'
        }
        // 中央仓库
        mavenCentral()
        // grandle插件
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
}

allprojects { project ->
    buildscript {
        dependencyManagement {
            imports {
                mavenBom "org.springframework.boot:spring-boot-starter-parent:2.2.6.RELEASE"
                mavenBom "org.springframework.cloud:spring-cloud-dependencies:Hoxton.SR3"
            }
            dependencies {
                //dependency "org.springframework.boot:spring-boot-starter-web:2.2.6.RELEASE"
                dependency "com.github.xiaoymin:knife4j-spring-boot-starter:3.0.3"
                dependency "com.alibaba:fastjson:1.2.75"
                dependency "cn.hutool:hutool-all:5.7.4"

                dependency 'com.alibaba.cola:cola-component-dto:4.0.1'
                dependency 'com.alibaba.cola:cola-component-domain-starter:4.0.1'
                dependency 'com.alibaba.cola:cola-component-catchlog-starter:4.0.1'
                dependency 'com.github.pagehelper:pagehelper-spring-boot-starter:1.3.1'
                dependency 'org.apache.commons:commons-lang3:3.12.0'
                dependency 'com.alibaba:druid-spring-boot-starter:1.2.6'
                dependency 'io.swagger:swagger-annotations:1.5.22'
                dependency 'io.jsonwebtoken:jjwt:0.9.1'
                dependency 'eu.bitwalker:UserAgentUtils:1.21'

            }
        }
    }
}

subprojects {
    dependencies {
        compileOnly 'org.projectlombok:lombok:1.18.8'
        annotationProcessor 'org.projectlombok:lombok:1.18.8'
        compile 'cn.hutool:hutool-all:5.7.4'
        compile group: 'org.mapstruct',name: 'mapstruct-jdk8', version: '1.3.1.Final'
        annotationProcessor ("org.mapstruct:mapstruct-processor:1.3.1.Final")

    }
}


def createServiceModule() {
    println "--------------开始创建模块---------------------"
    def module = "order"
    def dirs = ["app", "adapter", "client", "domain", "infrastructure", "start"]
    def parent = "arch-service/arch-service-" + module;
    //def parent = "arch-common";

    // FileUtil.mkdir("./" + parent);
    mkdir(parent)
    dirs.each {
        mkdir(parent + "/${module}-${it}")
        file(parent + "/${module}-${it}/build.gradle").createNewFile()
    }

    println "--------------完成创建模块---------------------"
}

//createServiceModule()



子模块

plugins {
    id 'java-library'
}

dependencies {
    api(project(':arch-common'))
}

main Boot 模块

plugins {
    id 'org.springframework.boot'
}

// 用了插件org.springframework.boot之后,jar task会失效,可用bootJar取代
bootJar {
    archiveBaseName = project.name
    archiveVersion = project.version

    manifest {
        attributes(
                'Created-By': "${System.properties['java.version']} (${System.properties['java.vendor']} ${System.properties['java.vm.version']})".toString(),
                'Built-By': 'travis',
                'Build-Date': buildDate,
                'Build-Time': buildTime,
                'Built-OS': "${System.properties['os.name']}",
                'Specification-Title': project.name,
                'Specification-Version': projectVersion,
                'Specification-Vendor': 'Will Zhao',
                'Implementation-Title': project.name,
                'Implementation-Version': projectVersion,
                'Implementation-Vendor': 'Will Zhao'
        )
    }
}

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}

// 子模块自己的依赖
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    // 二方库依赖
    implementation project(':democlient')
    // annotationProcessor不会传递,使用了lombok生成代码的模块,需要自己声明annotationProcessor
    annotationProcessor 'org.projectlombok:lombok'

}

test {
    useJUnitPlatform()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值