首页 > 其他分享 >使用Gradle构建spring-boot多模块项目

使用Gradle构建spring-boot多模块项目

时间:2022-08-28 14:55:40浏览次数:77  
标签:kts spring boot gradle boogle org Gradle

一、目录结构

.
├── boogle-common
│   ├── build.gradle.kts
│   └── src
├── boogle-core
│   ├── build.gradle.kts
│   └── src
├── boogle-generator
│   ├── build.gradle.kts
│   └── src
├── boogle-logging
│   ├── build.gradle.kts
│   └── src
├── boogle-quartz
│   ├── build.gradle.kts
│   └── src
├── boogle-system
│   ├── build.gradle.kts
│   └── src
├── boogle-web-starter
│   ├── build.gradle.kts
│   └── src
├── buildSrc
│   ├── build
│   ├── build.gradle.kts
│   └── src
│       └── main
│           └── kotlin
│               └── org.wm.java-conventions.gradle.kts
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts

二、引入spring-boot相关依赖

buildSrc/build.gradle.kts

plugins {
    `kotlin-dsl`
  	// spring-boot 依赖管理插件
    id("org.springframework.boot") version "2.7.3"
}
// spring-boot 依赖管理插件
apply(plugin = "io.spring.dependency-management")

// 指定启动类
tasks.named<org.springframework.boot.gradle.tasks.bundling.BootJar>("bootJar") {
    mainClass.set("org.wm.WebAppApplication")
}
// 自定义slf4j版本
extra["slf4j.version"] = "1.7.20"
repositories {
    maven {
        url = uri("https://plugins.gradle.org/m2/")
    }
    gradlePluginPortal()
}
dependencies {
  // spring-boot插件依赖
    implementation("org.springframework.boot:spring-boot-gradle-plugin:2.7.3")
}

buildSrc/src/main/kotlin/org.wm.java-conventions.gradle.kts

import org.springframework.boot.gradle.tasks.bundling.BootJar

plugins {
    `java-library`
    `maven-publish`
    id("org.springframework.boot")
}
apply(plugin = "io.spring.dependency-management")

tasks.named<BootJar>("bootJar") {
    mainClass.set("org.wm.WebAppApplication")
}

repositories {
    mavenLocal()
    maven {
        url = uri("https://maven.aliyun.com/repository/public/")
    }
    maven {
        url = uri("https://repo.maven.apache.org/maven2/")
    }
}

dependencies {
    api("org.springframework.boot:spring-boot-starter-web")
    api("org.springframework.boot:spring-boot-configuration-processor")
    api("org.projectlombok:lombok:1.18.24")
    annotationProcessor("org.projectlombok:lombok:1.18.24")
    testAnnotationProcessor("org.projectlombok:lombok:1.18.24")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("io.projectreactor:reactor-test:3.4.17")
}

group = "org.wm"
version = "1.0.0-SNAPSHOT"
java.sourceCompatibility = JavaVersion.VERSION_17
publishing {
    publications.create<MavenPublication>("maven") {
        from(components["java"])
    }
}
tasks.withType<JavaCompile>() {
    options.encoding = "UTF-8"
}

三、子项目依赖

boogle-common/build.gradle.kts

plugins {
    id("org.wm.java-conventions")
}
dependencies {
    api(project(":boogle-core"))
    api("org.springframework.boot:spring-boot-starter-aop")
    api("org.springframework.boot:spring-boot-starter-data-redis")
}

description = "通用工具模块"

boogle-core/build.gradle.kts

plugins {
    id("org.wm.java-conventions")
}
dependencies {
    api("org.springframework.boot:spring-boot-starter-security")
    testImplementation("org.springframework.security:spring-security-test:5.6.3")
}
description = "核心模块"

四、settings.gradle.kts配置

rootProject.name = "XunLuAdmin"
include(":boogle-core")
include(":boogle-system")
include(":boogle-web-starter")
include(":boogle-logging")
include(":boogle-generator")
include(":boogle-quartz")
include(":boogle-common")

五、打包

./gradlew bootJar

如果使用IDEA可以直接点击/Tasks/build/bootJar任务打包。

六、参考文档

spring-boot插件地址

Spring-boot依赖配置地址

Gradle官方文档

标签:kts,spring,boot,gradle,boogle,org,Gradle
From: https://www.cnblogs.com/yourblog/p/16632766.html

相关文章

  • Spring5.2.x-06-Spring扫描原理
    在ConfigurationClassPostProcessor内部完成扫描在扫描的时候,为什么要用asm,如果直接用类,可能会把static里的直接执行了,spring尽量做到不直接影响用户(比如这......
  • Spring 高级 Aware 接口及 InitializingBean 接口
    一、Aware1、Aware接口的作用Aware接口提供了一种【内置】的注入手段,例如BeanNameAware注入bean的名字BeanFactoryAware注入BeanFactory容器ApplicationC......
  • Referenced file contains errors (http://www.springframework.org/schema/beans/spr
    Referencedfilecontainserrors(http://www.springframework.org/schema/beans/spring-beans-3.0.xsd)._faihtua的博客-CSDN博客 https://blog.csdn.net/faihtua/arti......
  • Spring 高级 工厂后处理器模拟实现-Mapper
    一、源方式自动注入packagecom.mangoubiubiu.show.a05;importcom.alibaba.druid.pool.DruidDataSource;importcom.mangoubiubiu.show.a05.component.Bean2;impor......
  • Spring源码-自定义标签
    一、新建实体类publicclassUserimplementsSerializable{privateStringid;privateStringname;privateIntegerage;publicStringgetId(){ return......
  • spring源码具体细节 super setConfigLocations
      1首先先调用super父类构造方法 classPathXmlApplicaitonContext 初始化成员属性  依然掉父类构造方法 调用父类 资源处理器 当前系统需要运行所......
  • Spring源码01:环境搭建
    写在开始:这个系列会陆续更新我学习Spring源码的一些笔记与自己的理解,由于本人水平有限,难免对有些知识理解不到位,亦或者手误导致文中有不正确的地方,欢迎各位指正与探讨。......
  • Spring(二)-生命周期 + 自动装配(xml) +自动装配(注解)
    1、生命周期**Spring容器的bean**的生命周期;1.1默认生命周期1.1.1生命周期调用构造方法,创建实例对象;set方法,给实例对象赋值;init初始化方法初始化对象;(手......
  • Spring中的SPI机制
    前言在面向对象编程领域中,六大原则之一的依赖倒置原则提到的原则规定:高层次的模块不应该依赖于低层次的模块,两者都应该依赖于抽象接口;抽象接口不应该依赖于具体实现,而......
  • 理解Spring Security和实现动态授权
    一、SpringSecurity架构SpringSecurity是基于SpringAOP和Servlet过滤器的安全框架,提供全面的安全性解决方案。SpringSecurity核心功能包括用户认证(Authenticati......