Gradle构建多模块项目(整合Java SE 和 Springboot)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 参考于 xiejx618的专栏:gradle多模块开发 全部源码在github上 https://github.

参考于 xiejx618的专栏:gradle多模块开发

全部源码在github上
https://github.com/Kuangcp/GradleIntegrationMultipleModules
完整源码,点击下载

步骤

  • 新建一个gradle 空Module(不勾选java或者其他类型),这就是整个大项目
  • 选中刚新建的Module 然后新建Module 只选java 就是se核心复用部分
  • 选中最下的依赖库(External Libraries),然后新建Springboot 的Module,选择Gradle Project 不是Gradle config,不然没有初始代码和完整目录,选择依赖之后建立成功后(后台不再有任务运行)
  • 直接将Springboot模块拖到大项目下,就成为了大项目的子文件夹
  • 修改大项目下的 setting.gradle 文件,添加 include ‘Springboot模块的名字 ’ 即可
  • 然后在右边 gradle工具条中删除 和大项目同级的那个Springboot (前提是你发现和se项目同级出现了Springboot项目名) 弹窗提示然后去掉main和test的勾,就不会删除对应包
  • 修改gradle构建文件:

整个项目的build.gradle 文件

allprojects {
    apply plugin: 'java'
    group 'com.github.kuangcp'
    version = '1.0'
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
}
subprojects {
    ext {
//        slf4jVersion = '1.7.7'
        springVersion = '4.3.8.RELEASE'
        hibernateVersion = '4.3.1.Final'
    }
    [compileJava, compileTestJava, javadoc]*.options*.encoding = 'UTF-8'
    repositories {
        mavenCentral()
    }
    configurations {
        //compile.exclude module: 'commons-logging'
        all*.exclude module: 'commons-logging'
    }
    dependencies {
        compile(
                 'redis.clients:jedis:2.9.0',
                 'org.slf4j:slf4j-api:1.7.25',
                 'ch.qos.logback:logback-core:1.1.11',
                 'ch.qos.logback:logback-classic:1.1.11',

//                "org.slf4j:jcl-over-slf4j:${slf4jVersion}",
//                "org.slf4j:slf4j-log4j12:${slf4jVersion}",
                "org.springframework:spring-context:$springVersion",
//                "org.springframework:spring-orm:$springVersion",
//                "org.springframework:spring-tx:$springVersion",
//                "org.springframework.data:spring-data-jpa:1.5.2.RELEASE",
//                "org.hibernate:hibernate-entitymanager:$hibernateVersion",
//                "c3p0:c3p0:0.9.1.2",
                "mysql:mysql-connector-java:5.1.35",
//                "commons-fileupload:commons-fileupload:1.3.1",
                "com.fasterxml.jackson.core:jackson-databind:2.3.1"
        )
        testCompile(
                "org.springframework:spring-test:$springVersion",
                "junit:junit:4.12"
        )
    }
}
project(':redis_core') {

}
project(':redis_web') {
    apply plugin: "war"
    dependencies {
        compile project(":redis_core")
        compile(
                'org.springframework.boot:spring-boot-starter-thymeleaf',
                'org.springframework.boot:spring-boot-starter-web'
        )
        testCompile(
                'org.springframework.boot:spring-boot-starter-test'
        )
//        providedCompile(
//                "javax.servlet:javax.servlet-api:3.1.0",
//                "javax.servlet.jsp:jsp-api:2.2.1-b03",
//                "javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1"
//        )
    }
    processResources{
        /* 从'$projectDir/src/main/java'目录下复制文件到'WEB-INF/classes'目录下覆盖原有同名文件*/
        from("$projectDir/src/main/java")
    }

    /*自定义任务用于将当前子项目的java类打成jar包,此jar包不包含resources下的文件*/
    def jarArchiveName="${project.name}-${version}.jar"
    task jarWithoutResources(type: Jar) {
        from sourceSets.main.output.classesDir
        archiveName jarArchiveName
    }

    /*重写war任务:*/
    war {
        dependsOn jarWithoutResources
        /* classpath排除sourceSets.main.output.classesDir目录,加入jarWithoutResources打出来的jar包 */
        classpath = classpath.minus(files(sourceSets.main.output.classesDir)).plus(files("$buildDir/$libsDirName/$jarArchiveName"))
    }
    /*打印编译运行类路径*/
    task jarPath << {
        println configurations.compile.asPath
    }
}

/*从子项目拷贝War任务生成的压缩包到根项目的build/explodedDist目录*/
task explodedDist(type: Copy) {
    into "$buildDir/explodedDist"
    subprojects {
        from tasks.withType(War)
    }
}

效果图

效果图

  • 下载项目: git clone https://github.com/Kuangcp/GradleIntegrationMultipleModules
  • 进行构建: gralde build 使用整个项目的build命令就可以把两个模块进行整合了
  • 在web模块的build/lib/下的jar java -jar 名字直接运行,然后打开浏览器 http://localhost:8080/r/o 看到有文字输出就是构建成功了

https://github.com/Kuangcp/GradleIntegrationMultipleModules
完整源码,点击下载

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
10天前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
122 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
25天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
162 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
4月前
|
Java Docker 容器
java版本学习网站又添加了一个libgdx模块
java版本学习网站之前添加了docker,想了想还是再把libgdx添加进去吧。
53 3
|
7月前
|
Java Maven 开发者
gradle项目对比maven项目的目录架构以及对gradle wrapper的理解
gradle项目对比maven项目的目录架构以及对gradle wrapper的理解
90 0
|
8月前
|
监控 Java 关系型数据库
java版MES系统源码,后端采用 Spring Boot 多模块架构
MES系统采用Vue3的vue-element-plus-admin为后台,Spring Boot多模块架构,支持MySQL、Oracle等数据库,具备SaaS多租户功能。核心功能包括车间计划排程、工艺流程配置、生产质量管理、进度追踪、库存和排班管理等,全面覆盖生产运营关键环节。
132 0
java版MES系统源码,后端采用 Spring Boot 多模块架构
|
7月前
|
Java
graphql dgs springboot gradle学习
https://dgraphql dgs springboot gradle学习
|
8月前
Gradle项目加速构建
Gradle项目加速构建
543 0
|
8月前
|
Java API Maven
Gradle 自动化项目构建-Gradle 核心之 Project
Gradle 自动化项目构建-Gradle 核心之 Project
99 0
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
2820 0
Android Studio插件版本与Gradle 版本对应关系
|
存储 Java Android开发
Android 开发 - 充分利用Gradle
Android 开发 - 充分利用Gradle
200 2

热门文章

最新文章

推荐镜像

更多