当前位置: 首页 > article >正文

springboot gradle 多项目创建

    • 1.背景
    • 2.创建父项目
    • 3.配置gradlew
    • 4.创建子项目

1.背景

1.用IDE创建一个父项目(school_project),两个子项目(student_project,teacher_project)。子项目是两个springboot工程
2.使用gradle kotlin进行管理,gradle版本8.11.1
3.使用java17
4.springboot版本3.4.0

下面这个是官网的图,一个project和两个a,b子项目,本文实现的也是这个项目结构
在这里插入图片描述

2.创建父项目

创建一个java项目
在这里插入图片描述
注意这里gradle Wrapper随便选一个版本,后面改为8.11.1

创建完后,删除src目录,src是放代码的地方,父项目不需要,代码在子项目中

下面修改build.gradle.kts和setting.gardle.kts这两个文件,这两个文件也是父项目统一配置子项目的地方。
修改build.gradle.kts文件,我的如下:

plugins {
    id("org.springframework.boot") version "3.4.0"
    id("io.spring.dependency-management") version "1.1.6"
}

group = "org.example"
version = "1.0-SNAPSHOT"

主要是指定springboot插件的版本是3.4.0,在子项目中引用插件时就不用指定版本了

修改settins.gradle.kts
我的文件如下:

pluginManagement {
    repositories {
        maven { url=uri ("https://www.jitpack.io")}
        maven { url=uri ("https://maven.aliyun.com/repository/releases")}
        maven { url=uri ("https://maven.aliyun.com/repository/google")}
        maven { url=uri ("https://maven.aliyun.com/repository/central")}
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin")}
        maven { url=uri ("https://maven.aliyun.com/repository/public")}
        google()
        mavenCentral()
        gradlePluginPortal()
    }
}
dependencyResolutionManagement {
    repositories {
        maven { url=uri ("https://www.jitpack.io")}
        maven { url=uri ("https://maven.aliyun.com/repository/releases")}
        maven { url=uri ("https://maven.aliyun.com/repository/google")}
        maven { url=uri ("https://maven.aliyun.com/repository/central")}
        maven { url=uri ("https://maven.aliyun.com/repository/gradle-plugin")}
        maven { url=uri ("https://maven.aliyun.com/repository/public")}
        google()
        mavenCentral()
    }
}

rootProject.name = "school_project"


1.pluginManagement ,是统一的插件地址
2.dependencyResolutionManagement ,是统一的依赖下载地址。

父项目的根目录下的这个settins.gradle.kts文件是所有项目的统一配置的地方,我这里配置了插件和依赖下载的地址,这样后面在两个子项目(student和teacher)中就不用配置了,这也是父项目的意义所在:统一管理配置。
改好后,点gradle的这个图标,会下载相关依赖,看看有没有问题
在这里插入图片描述
小结:

  • setting.gardle.kts这个文件在多项目中,官方建议只能存在于父项目中。

3.配置gradlew

修改文件gradle-wrapper.properties,主要把distributionUrl改成我们想要的版本8.11.1,文件内容是:

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.11.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

在这里插入图片描述

注意这个地址distributionUrl,加速下载,最好改国内地址,https后面还有个\

然后在settings里面改Gradle配置:
1.Gradle user home:选本地磁盘目录,所有java依赖jar包都会下载在这个目录,一般自己电脑上所有gradle项目都共用这个目录,相当于maven的repository目录。
2.Distribution: 选Wrapper
在这里插入图片描述

如果在自己电脑上安装了gradle,也不需要配置gradlew。上面的Distribution选本机的gradle就行了。如下图。
在这里插入图片描述
之所以配置gradlew,好处是项目可以拥有自己独立的gradle版本(和本地电脑上安装的版本不会有冲突),上面的文件gradle-wrapper.properties,当别人通过git获取到项目代码时,也会根据这个文件自动下载配置gradle(本地电脑不必安装gradle)。

4.创建子项目

在这里插入图片描述
点父项目右击,创建new module
在这里插入图片描述
这一步先随便选一个spingboot版本,后面会删掉
在这里插入图片描述

创建完后,删除下面红框中的目录和文件,只留下src目录和build.gradle.kts文件
在这里插入图片描述
在build.gradle.kts文件内容改成下面这个:
注意plugins里面不需要加版本号,在父项目的build.gradle.kts文件中加了。

plugins {
    java
    id("org.springframework.boot")
    id("io.spring.dependency-management")
}

group = "org.example"
version = "0.0.1-SNAPSHOT"

dependencies {
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.springframework.boot:spring-boot-starter-web")
    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testRuntimeOnly("org.junit.platform:junit-platform-launcher")
}

创建完成后,在父项目的settings.gradle.kts文件中,加上了include(“student_project”),
比较奇怪这个include(“student_project”)应该是自动加好的,但是没有加,我就手动加了一下。(可能是创建子项目时,选springboot有bug吧,我测试了一下,如果子项目选java,就会自动加上这个)
在这里插入图片描述

然后点gradle加载时,会报错
Task ‘wrapper’ not found in project ‘:student_project’.
打开“File-Project Structure",发现Modules里面有一个和"school_project"平级的“student_project",把这个"student_project"删掉。
在这里插入图片描述
就个错应该和前面没有自动加这个include(“student_project”)问题一样,导致没有把student识别为school的子项目,当作了平级的。

再原样创建一个子项目teacher_project,最终项目结构如下:
注意下面Gradle窗口中student和teacher在school里面,如果有和school同级的就删掉。
在这里插入图片描述


http://www.kler.cn/a/570051.html

相关文章:

  • Python----线性代数(线性代数基础:标量,向量,矩阵,张量)
  • 【每日学点HarmonyOS Next知识】web内存异常问题、Web高度问题、图片按压效果、加载沙盒中html、感知路由返回传参
  • IP-----BGP协议
  • Ai-web 1.0靶场通关攻略
  • [特殊字符] Django 常用命令
  • MySql面试总结(二)
  • WireGuard搭建网络,供整个公司使用
  • 基于 RK3568 / IMX6ULL / STM32MP157 的智能车载系统
  • 基于YALMIP和cplex工具箱的IEEE33微电网故障处理电网重构matlab模拟与仿真
  • OceanBase接入DeepSeek,AI落地改写行业规则
  • 指针的进阶(提高篇)
  • 11.字符函数和字符串函数
  • js的简单介绍
  • 算法-回溯篇03-电话号码的字母组合
  • codewave初识
  • 一文讲清楚 MySQL 事务隔离级别和实现原理
  • Linux查看TP6 command定时任务并重启
  • CSS - 妙用Sass
  • shell脚本编程实践第6天
  • 高性能采集服务上线回顾