Gradle 快速使用
!!!!使用Gradle-Kotlin 构建spring boot项目 !!!!
简介
Gradle官网:https://docs.gradle.org/
Gradle 是一种开源自动化构建工具,支持多语言环境,受 Ant、Maven 思想的影响,集二者之大成,相比 Ant 的不规范,Maven 的配置复杂、生命周期限制严重,Gradle 既规范也更灵活,可以使用DSL (领域特定语言,如Groovy 或 Kotlin)编写构建脚本,脚本更短小精悍
它的特性有:
- 高度定制化:模块化可扩展,更灵活
- 构建迅速:支持并行构建,自动复用之前任务构建的结果以提高效率
- 功能强大:支持多语言环境,包含 Java、Android、C++、Groovy、Javascript 等项目的构建
Ant、Maven 有的 Gradle也有,Gradle有的它们不一定有;
Ant、Maven能干的,Gradle 都能干,而且干得更好
构建springboot项目
创建项目
在这里使用idea的Spring Initalizr进行简单的项目构建,类型为Gradle - Kotlin。
完成后项目目录如下:
关键文件及其内部的结构
参考大佬的文章:https://zhuanlan.zhihu.com/p/578972804
关键文件的概念: 基于上述目录的图片
-
gradle
- gradle-wrapper.properties:指定 Gradle 构建工具的版本和下载地址。
- distributionBase:指定 Gradle 分发包的基本 URL。默认情况下,它是 Gradle 官方仓库的 URL。
- distributionPath:指定 Gradle 分发包的存储路径。默认情况下,它是在项目根目录下的 gradle/wrapper 目录。
- zipStoreBase:指定分发包存储的基本 URL。默认情况下,它是 Gradle 官方仓库的 URL。
- zipStorePath:指定分发包存储的路径。默认情况下,它是在 distributionPath 指定的目录下的 dists 目录。
- gradle-wrapper.properties:指定 Gradle 构建工具的版本和下载地址。
-
build.gradle.kts:Gradle 构建工具的 Kotlin DSL配置文件,相当于maven的 pom.xml
-
//build.gradle.kts的大致结构 plugins { java id("org.springframework.boot") version "2.1.16.RELEASE" id("io.spring.dependency-management") version "1.0.11.RELEASE" } group = "com.example" version = "0.0.1-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_8 } repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") testImplementation("org.springframework.boot:spring-boot-starter-test") } tasks.withType<Test> { useJUnitPlatform() }
-
plugins:该属性用于声明和配置需要使用的插件。插件是 Gradle 的核心功能扩展,可以添加额外的构建任务和功能。可以使用
id()
函数指定要应用的插件,例如id("java")
表示应用 Java 插件。 -
group:该属性用于定义项目的组织或组织名称。一般用于 Maven 坐标的 groupId(组织ID)部分。它在发布构件到仓库时会被用于唯一标识项目所属组织。
-
version:该属性用于定义项目的版本号。一般用于 Maven 坐标的 version(版本号)部分。它在发布构件到仓库时会被用于标识项目的版本。
-
java: 该属性用于配置 Java 插件相关的设置。可以指定项目的编译版本、源代码和资源目录等。例如,
sourceCompatibility = JavaVersion.VERSION_11
表示指定使用 Java 11 版本进行编译。 -
repositories:该属性用于配置项目的仓库源,即依赖项的获取位置。可以指定本地或远程的 Maven 仓库、JCenter、Maven Central 等。通过配置
mavenCentral()
或jcenter()
等函数来添加默认的远程仓库源。 -
dependencies: 该属性用于定义项目的依赖项。例如,
implementation("org.jsoup:jsoup:1.14.1")
表示引入 Jsoup 1.14.1 版本的库作为编译时依赖。 -
dependencyManagement:
-
- 统一管理依赖项版本:通过在 `dependencyManagement` 块中声明依赖项及其版本号,可以确保整个项目中使用的相同依赖项都使用统一的版本。 - 管理传递性依赖项:当一个依赖项引入其他依赖项时,Gradle 在默认情况下会选择适配的版本。但是,使用 `dependencyManagement` 可以明确指定所需的传递性依赖项版本,从而更精确地控制整个项目的依赖项版本。
-
-
tasks.withType:该属性用于选择和配置特定类型的构建任务。在该例子中,选择了测试任务(Test),可以对单元测试或集成测试任务进行配置。
-
-
setting.gradle.kts:用于定义项目中的子模块以及它们之间的依赖关系。
-
gradle.properties(此处无):用于设置全局的构建属性和参数,可以被其他配置文件引用,属性的格式为
key=value
。
添加依赖
- 正常搜索依赖,选择Gradle(Kotlin)即可
- 将依赖添加到build.gradle.kts文件中。找到dependencies{},将依赖的坐标放入即可。例如:
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
implementation("com.mysql:mysql-connector-j:8.1.0")
testImplementation("org.springframework.boot:spring-boot-starter-test")
}
重构Gradle的项目模型
在idea的侧栏打开Gradle,点击刷新自动构建。
注意
构建时间会很久,可能会因为网络状态或权限导致构建失败!
侧边栏的结构
侧边栏的结构,每一个子工程都至少包括tasks和dependencies
主工程除了tasks,dependencies,还多一个run configurations
Tasks里面就是 gradle定义好的原生task;当然也可以自定义task,会出现在侧边栏 tasks/other下面。
常用的task(Tasks–build下):clean、build、install
clean
:清理构建生成的文件和目录。
build
:构建项目并生成可部署的产物(例如 JAR、WAR 等)。
install
:将构建的产物安装到本地 Maven 或 Ivy 仓库中。
可部署的产物(例如 JAR、WAR 等)。
install
:将构建的产物安装到本地 Maven 或 Ivy 仓库中。
除了用侧边栏的便捷方式,还可以用终端指令的方式执行命令。