当前位置:   article > 正文

使用SpringBoot与Gradle搭建多模块项目_springboot module gradle

springboot module 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
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

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
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

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"
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

5. skm-contller-web/build.gradle

plugins {
}

dependencies {
    implementation project (':skm-comm')
    implementation project (':skm-service')
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

二、项目打包

在这里插入图片描述

三、项目下载

[点击下载demo]


总结

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/305640
推荐阅读
相关标签
  

闽ICP备14008679号