gradle管理springBoot多模块打包

项目结构如图所示:

这个里六个模块。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。
在这里插入图片描述
点击build打包。然后在run模块的build/libs目录下会生成一个jar包。使用命令java -jar xxx.jar可启动项目

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Gradle的多模块项目中使用Spring Boot打包时,需要在每个模块中配置相应的构建脚本build.gradle文件。以下是一个示例: 1. 在根目录的build.gradle中添加以下代码: ```groovy subprojects { apply plugin: 'java' apply plugin: 'org.springframework.boot' apply plugin: 'io.spring.dependency-management' repositories { mavenCentral() } dependencies { compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') } jar { baseName = "${project.name}" version = "${project.version}" } bootJar { baseName = "${project.name}" version = "${project.version}" } } ``` 2. 在每个模块的build.gradle中添加以下代码: ```groovy apply plugin: 'java' apply plugin: 'io.spring.dependency-management' dependencies { implementation project(':module-name') compile('org.springframework.boot:spring-boot-starter-web') testCompile('org.springframework.boot:spring-boot-starter-test') } jar { baseName = "${project.name}" version = "${project.version}" } bootJar { baseName = "${project.name}" version = "${project.version}" } ``` 其中,`module-name`为该模块依赖的其他模块的名称。 3. 在根目录下执行`./gradlew build`命令即可打包所有模块。在每个模块的build/libs目录下会生成相应的jar包和可执行的bootJar文件。 注意:如果需要将多个模块打包成一个可执行的jar包,可以在根目录下的build.gradle文件中添加以下代码: ```groovy task fatJar(type: Jar) { manifest { attributes 'Main-Class': 'com.example.Application' } baseName = "${rootProject.name}-all" version = "${rootProject.version}" from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } with jar } ``` 其中,`com.example.Application`为启动类的全限定名。执行`./gradlew fatJar`命令即可在根目录下生成一个可执行的jar包。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值