gradle管理springBoot多模块打包

项目结构如图所示:
gradle管理springBoot多模块打包_第1张图片
这个里六个模块。run启动模块,也是需要打成jar包启动的.依赖顺序是run->server->agreement->handler->command.由于client是我用来连接测试,暂不讨论。除了run模块之外其他模块只有一句话,引入其他模块,如server中:

dependencies {
    compile project(":xia-agreement")
}

引入其他模块。由于compile具有依赖传递性,就是说如果A依赖B,B又依赖C(A->B->C)。那么使用compile引入依赖的时候,A也会依赖到C。如果不需要传递性,使用implementation这个引入依赖即可。
首先看父模块,也就是最上层的模块的build.gradle文件:

// 所有模块/项目的通用配置
allprojects {

    group 'xxx.spring.netty'
    version '1.0-SNAPSHOT'

    apply plugin: 'idea'
    apply plugin: 'java'

    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
    repositories {
        mavenLocal()
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}
        mavenCentral()
    }
    dependencies {
        compile group: 'org.springframework.boot', name: 'spring-boot-starter', version: '2.4.0'
        compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.4.0'
        compile group: 'io.netty', name: 'netty-all', version: '4.1.52.Final'
        compile 'commons-logging:commons-logging:1.2'
        compile 'com.google.protobuf:protobuf-java:3.11.0'
        compileOnly 'org.projectlombok:lombok:1.18.12'
        compile 'org.projectlombok:lombok:1.18.12'
        compile group: 'org.apache.thrift', name: 'libthrift', version: '0.13.0'
        compile group: 'com.google.guava', name: 'guava', version: '30.0-jre'
        compile group: 'com.alibaba', name: 'fastjson', version: '1.2.75'
        compile group: 'cn.hutool', name: 'hutool-all', version: '5.5.1'
        compile group: 'com.baomidou', name: 'mybatis-plus', version: '3.4.1'
        compile group: 'mysql', name: 'mysql-connector-java', version: '8.0.22'
        compile group: 'com.lmax', name: 'disruptor', version: '3.4.2'
    }
}

使用allprojects 表示所有项目的属性,所以子模块只需要引入自己的依赖,而项目的其他公用属性可以不用设置,包括依赖。在repositories中查找依赖的顺序从上到下,在这里是先从本地查找,再去阿里云maven仓库,最后去maven中央仓库.
然后再run模块的build.gradle中中配置

buildscript  {
    ext {
        springIOVersion = '1.0.0.RELEASE'
        springBootPluginVersion = '1.5.9.RELEASE'

        projectMainClassName = 'com.xxx.spring.netty.StartApplication'
    }
    repositories {
        mavenLocal()
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/"}
        mavenCentral()
    }
    dependencies {
        classpath "io.spring.gradle:dependency-management-plugin: ${springIOVersion}"
        classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootPluginVersion}"
    }
}

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'

tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}
apply plugin: 'application'
mainClassName = "${projectMainClassName}"

jar {
    baseName = 'xxx-run'
    version = '0.0.1'
    manifest {
        attributes "Manifest-Version": 1.0,
                'Main-Class': "${projectMainClassName}"
    }
}
dependencies {
    compile project(":xxx-server")
}

配置打包成jar。
gradle管理springBoot多模块打包_第2张图片
点击build打包。然后在run模块的build/libs目录下会生成一个jar包。使用命令java -jar xxx.jar可启动项目

你可能感兴趣的:(JAVA)