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

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同级的就删掉。
在这里插入图片描述

相关文章:

  • 《鸢尾花数学大系:从加减乘除到机器学习》开源资源
  • 【Mybatis】如何简单使用mybatis-plus,以及MybatisGenerator自动生成或者实现SQL语句
  • 【二.提示词工程与实战应用篇】【3.Prompt调优:让AI更懂你的需求】
  • 布置云服务器mysql注意事项:Your password does not satisfy the current policy requirements
  • DeepSeek集成到VScode工具,让编程更高效
  • 神经网络 - 激活函数(Swish函数、GELU函数)
  • 【C语言初阶】操作符_作业详解的一些疑问
  • 浏览器自定义区域截图 js-vue
  • Leetcode 189: 轮转数组
  • 【SRC实战】小游戏漏洞强制挑战
  • 计算机基础面试(数据库)
  • 零信任沙箱:为网络安全筑牢“隔离墙”
  • 【前端基础】Day 8 H5C3提高
  • 基于 Elasticsearch 和 Milvus 的 RAG 运维知识库的架构设计和部署落地实现指南
  • 【练习】【贪心】力扣435. 无重叠区间
  • TEE可信执行环境的安全业务保护方案
  • 前端水印实现方式
  • Windows 图形显示驱动开发-WDDM 3.2-脏位跟踪
  • 在剪映中给英文学习视频添加中文字幕
  • 微前端开发模式解析与实践
  • 像wordpress一样的网站吗/如何做网络营销
  • 群辉做网站/网站推广软文范例
  • 成都住建局官网登陆/优化大师官网入口
  • 大型门户网站模板/怎么自己制作网页
  • 如何做动态网站html/关键词推广效果分析
  • 做网店装修的网站有哪些/搜索引擎竞价推广的优势