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

简介: 参考于 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
完整源码,点击下载

目录
相关文章
|
9月前
|
人工智能 算法 Java
Java与AI驱动区块链:构建智能合约与去中心化AI应用
区块链技术和人工智能的融合正在开创去中心化智能应用的新纪元。本文深入探讨如何使用Java构建AI驱动的区块链应用,涵盖智能合约开发、去中心化AI模型训练与推理、数据隐私保护以及通证经济激励等核心主题。我们将完整展示从区块链基础集成、智能合约编写、AI模型上链到去中心化应用(DApp)开发的全流程,为构建下一代可信、透明的智能去中心化系统提供完整技术方案。
553 3
|
9月前
|
设计模式 消息中间件 传感器
Java 设计模式之观察者模式:构建松耦合的事件响应系统
观察者模式是Java中常用的行为型设计模式,用于构建松耦合的事件响应系统。当一个对象状态改变时,所有依赖它的观察者将自动收到通知并更新。该模式通过抽象耦合实现发布-订阅机制,广泛应用于GUI事件处理、消息通知、数据监控等场景,具有良好的可扩展性和维护性。
658 8
|
9月前
|
机器学习/深度学习 人工智能 自然语言处理
Java与生成式AI:构建内容生成与创意辅助系统
生成式AI正在重塑内容创作、软件开发和创意设计的方式。本文深入探讨如何在Java生态中构建支持文本、图像、代码等多种生成任务的创意辅助系统。我们将完整展示集成大型生成模型(如GPT、Stable Diffusion)、处理生成任务队列、优化生成结果以及构建企业级生成式AI应用的全流程,为Java开发者提供构建下一代创意辅助系统的完整技术方案。
435 10
|
9月前
|
人工智能 监控 Java
Java与AI智能体:构建自主决策与工具调用的智能系统
随着AI智能体技术的快速发展,构建能够自主理解任务、制定计划并执行复杂操作的智能系统已成为新的技术前沿。本文深入探讨如何在Java生态中构建具备工具调用、记忆管理和自主决策能力的AI智能体系统。我们将完整展示从智能体架构设计、工具生态系统、记忆机制到多智能体协作的全流程,为Java开发者提供构建下一代自主智能系统的完整技术方案。
1109 4
|
9月前
|
人工智能 Java 物联网
Java与边缘AI:构建离线智能的物联网与移动应用
随着边缘计算和终端设备算力的飞速发展,AI推理正从云端向边缘端迁移。本文深入探讨如何在资源受限的边缘设备上使用Java构建离线智能应用,涵盖从模型优化、推理加速到资源管理的全流程。我们将完整展示在Android设备、嵌入式系统和IoT网关中部署轻量级AI模型的技术方案,为构建真正实时、隐私安全的边缘智能应用提供完整实践指南。
616 3
|
9月前
|
机器学习/深度学习 人工智能 监控
Java与AI模型部署:构建企业级模型服务与生命周期管理平台
随着企业AI模型数量的快速增长,模型部署与生命周期管理成为确保AI应用稳定运行的关键。本文深入探讨如何使用Java生态构建一个企业级的模型服务平台,实现模型的版本控制、A/B测试、灰度发布、监控与回滚。通过集成Spring Boot、Kubernetes、MLflow和监控工具,我们将展示如何构建一个高可用、可扩展的模型服务架构,为大规模AI应用提供坚实的运维基础。
675 0
|
9月前
|
机器学习/深度学习 分布式计算 Java
Java与图神经网络:构建企业级知识图谱与智能推理系统
图神经网络(GNN)作为处理非欧几里得数据的前沿技术,正成为企业知识管理和智能推理的核心引擎。本文深入探讨如何在Java生态中构建基于GNN的知识图谱系统,涵盖从图数据建模、GNN模型集成、分布式图计算到实时推理的全流程。通过具体的代码实现和架构设计,展示如何将先进的图神经网络技术融入传统Java企业应用,为构建下一代智能决策系统提供完整解决方案。
744 0
|
人工智能 移动开发 Java
Android Studio插件版本与Gradle 版本对应关系
Android Studio插件版本与Gradle 版本对应关系
5054 0
Android Studio插件版本与Gradle 版本对应关系
|
存储 Java Android开发
Android 开发 - 充分利用Gradle
Android 开发 - 充分利用Gradle
728 2
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况

推荐镜像

更多