IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 使用SpringBoot与Gradle搭建多模块项目 -> 正文阅读

[Java知识库]使用SpringBoot与Gradle搭建多模块项目


前言

使用的技术是springboot+ktor+mybatis-plus,可以参考 上一篇文章,此处将springmvc替换成ktor,ktor使用内置服务器是netty性能高效的同时也支持协程调度,整体整合之后启动比原有的速度快上不少,ktor是kotlin一个公司弄出来的所以不用担心项目不在维护的问题,目前ktor也能使用Shiro做为权限管理,整体而言感觉可以嵌入spring生态中,本案例仅仅只是模拟真实开发环境中需要用到的多模块项目的方式,项目本身只做为演示,实际使用过程需要在此基础上做好模块规划与项目依赖规划等。


一、项目示例代码

1.父工程的build.gradle与gradle.properties

  • build.gradle
plugins {
	// springboot 插件依赖
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
	// kotlin 插件依赖
    id 'org.jetbrains.kotlin.jvm' version "$kotlin_version"
    // kotlin对 springboot 插件依赖
    id "org.jetbrains.kotlin.plugin.spring" version "$kotlin_version"
    // kotlin noarg插件依赖 - 主要作用给data class 添加无参构造函数使反射能正常识别到
    id "org.jetbrains.kotlin.plugin.noarg" version "$kotlin_version"
    // kotlin noarg插件依赖 - 主要作用给class 去掉final对class的修饰
    id "org.jetbrains.kotlin.plugin.allopen" version "$kotlin_version"
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'

repositories {
    maven { url 'https://maven.aliyun.com/repository/public' }
    maven { url 'https://maven.aliyun.com/repository/central' }
    maven { url 'https://maven.aliyun.com/repository/google' }
    maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    maven { url 'https://maven.aliyun.com/repository/spring' }
    maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
    maven { url "https://maven.pkg.jetbrains.space/public/p/ktor/eap" }
    mavenCentral()
}

dependencies {}

subprojects {
    apply plugin: "org.springframework.boot"
    apply plugin: "io.spring.dependency-management"
    apply plugin: "org.jetbrains.kotlin.jvm"
    apply plugin: "org.jetbrains.kotlin.plugin.spring"
    apply plugin: "org.jetbrains.kotlin.plugin.noarg"
    apply plugin: "org.jetbrains.kotlin.plugin.allopen"

    group = 'com.example'
    version = '0.0.1-SNAPSHOT'
    sourceCompatibility = '1.8'

    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://maven.aliyun.com/repository/central' }
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { url 'https://maven.aliyun.com/repository/spring' }
        maven { url 'https://maven.aliyun.com/repository/spring-plugin' }
        maven { url "https://maven.pkg.jetbrains.space/public/p/ktor/eap" }
        mavenCentral()
    }

    dependencies {
        // 注意:这里使用的是 spring-boot-starter不是spring-boot-starter-web
        implementation 'org.springframework.boot:spring-boot-starter'
        // kotlin - kotlin与srpingboot中需要使用如下依赖,此处配置成通用子项目无需配置
        implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
        implementation 'org.jetbrains.kotlin:kotlin-reflect'
        implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
    }
    
    bootJar {
        enabled = false
    }

    jar {
        enabled = true
    }
}
  • gradle.properties
ktor_version=2.0.2
kotlin_version=1.7.0
spring_version=2.7.0
mybatis_version=3.5.2
velocity_version=1.7
druid_spring_version=1.2.11

2. 项目启动模块 - skm-app/build.gradle

plugins {
}

dependencies {
    // mybatis
    implementation "com.baomidou:mybatis-plus-boot-starter:$mybatis_version"
    implementation "com.baomidou:mybatis-plus-generator:$mybatis_version" // 代码生成器
    implementation "org.apache.velocity:velocity:$velocity_version" // 代码生成器需要的默认模板引擎
    //mysql数据库依赖
    runtimeOnly 'mysql:mysql-connector-java'
    implementation "com.alibaba:druid-spring-boot-starter:$druid_spring_version"
    
    implementation project (':skm-contller-web')
}

bootJar {
    enabled = true
}

3. skm-comm/build.gradle

plugins {
}

dependencies {
    // ktor
    api "io.ktor:ktor-server-core-jvm:$ktor_version"
    implementation "io.ktor:ktor-server-content-negotiation-jvm:$ktor_version"
    implementation "io.ktor:ktor-serialization-jackson-jvm:$ktor_version"
    implementation "io.ktor:ktor-server-netty-jvm:$ktor_version"

    // mybatis
    implementation "com.baomidou:mybatis-plus-boot-starter:$mybatis_version"
}

4. skm-service/build.gradle

plugins {
}

dependencies {
    // mybatis
    api "com.baomidou:mybatis-plus-boot-starter:$mybatis_version"
    implementation "com.baomidou:mybatis-plus-generator:$mybatis_version" // 代码生成器
    implementation "org.apache.velocity:velocity:$velocity_version" // 代码生成器需要的默认模板引擎
    // mysql数据库依赖
    runtimeOnly 'mysql:mysql-connector-java'
    implementation "com.alibaba:druid-spring-boot-starter:$druid_spring_version"
}

5. skm-contller-web/build.gradle

plugins {
}

dependencies {
    implementation project (':skm-comm')
    implementation project (':skm-service')
}

二、项目打包

在这里插入图片描述

三、项目下载

[点击下载demo]


总结

注意,不要使用 gradle kotlin dsl 俗称 gradle.kts 做为项目构建工具,目前测试过无法在gradle.kts使用kapt插件,kapt可以开启querydsl的编译构建工作,这个效果和maven类似,使用下来gradle还是可以放心使用的,gradle.kts坑比较多不建议做为实际开发项目的构建工具,如果不知道如何生成spring的gradle项目可以在spring 脚手架中选择java->gradle这样构建出来的项目就是普通的gradle项目,手动导入kotlin插件即可。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-06-29 18:51:47  更:2022-06-29 18:55:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/27 10:20:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码