当前位置:   article > 正文

Gradle入门(Demo)_gradle的demo

gradle的demo

        学习Spring源码的时候,发现现在Spring项目是用gradle构建的,因为平时工作都是用的maven,所以只能将学的Gradle知识点记录一下,无聊的学习成本又增加了。

        学习之前,推荐两个学习网址,w3cschool 和 官网。官网不用翻译插件我看起来是很吃力,所以我选择前者。安装教程、配置环境变量什么的就按照上面两个网址任意一个操作就行了。不过这里友情提示一下,我在网上看视频学习的时候,视频作者特意强调 Idea 和 gradle 之间有版本依赖的,如果版本不匹配,会导致一些莫名其妙的问题。如何查看自己的Idea 使用的哪个版本的Gradle,方式如下:

        1. 找到自己Idea的安装目录;

        2. 在安装目录的 /plugins/gradle/lib 目录下有对应的gradle版本;

如图,我的idea对应的版本是 7.4,所以我安装的就是 7.4版本。

 

一、单模块        

因为是入门,没有什么讲究,只为了自己能用些基础的就行,所以直接用 Idea 创建了一个gradle 项目,看看究竟是什么样子的。如图:

感觉和maven项目差不多,只是 pom.xml 换成了 build.gradle 。这个文件也是入门的关键。下面是上述Demo中 build.gradle 文件里面的内容:

  1. plugins {
  2. id 'java'
  3. }
  4. group 'org.example'
  5. version '1.0-SNAPSHOT'
  6. repositories {
  7. mavenCentral()
  8. }
  9. dependencies {
  10. testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
  11. testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
  12. implementation 'org.springframework:spring-beans:6.0.9'
  13. }
  14. test {
  15. useJUnitPlatform()
  16. }

第一个是 plugins 模块,里面指定了本项目用的 java 插件,Gradle中有好些插件,还可以自定义,具体的可以参考一下一开始推荐的两个网址。

执行命令:

gradle tasks

会看到如下输出:

  1. \GradleDemo> gradle tasks
  2. > Task :tasks
  3. ------------------------------------------------------------
  4. Tasks runnable from root project 'GradleDemo'
  5. ------------------------------------------------------------
  6. Build tasks
  7. -----------
  8. assemble - Assembles the outputs of this project.
  9. build - Assembles and tests this project.
  10. buildDependents - Assembles and tests this project and all projects that depend on it.
  11. buildNeeded - Assembles and tests this project and all projects it depends on.
  12. classes - Assembles main classes.
  13. clean - Deletes the build directory.
  14. jar - Assembles a jar archive containing the main classes.
  15. To see more detail about a task, run gradle help --task <task>
  16. BUILD SUCCESSFUL in 559ms
  17. 1 actionable task: 1 executed

从这里可以看到,java 插件提供了assemble、build、buildDependents、buildNeeded、classes、clean 和 jar 这些任务(task),关于什么是task,可以参考一开始说的那两个网址。这里先忽略,不影响我们入门。

其实这个就对应了 maven 里面的几个命令 clean, compile(这里是classes) , build等。是那味儿了啊。所以我们在需要编译,构建的时候,换成如下命令就行了:

  1. \GradleDemo> gradle clean classes build
  2. BUILD SUCCESSFUL in 700ms
  3. 3 actionable tasks: 2 executed, 1 up-to-date

        然后就是 group 和 version ,这两个应该没有好解释 的,就是和maven 里面的一样。

        再下面就是  repositories 模块,这个和maven里面的仓库是一个含义,这两默认是走的仓库是maven 中心仓库。也可以如下自定义:

  1. repositories {
  2. mavenLocal()
  3. maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
  4. maven { url "https://maven.aliyun.com/repository/central" }
  5. maven { url "https://maven.aliyun.com/repository/releases" }
  6. maven { url "https://maven.aliyun.com/repository/spring" }
  7. maven { url "https://maven.aliyun.com/repository/google" }
  8. maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
  9. mavenCentral()
  10. }

访问的顺序是从上到下依次访问。

        再往下就是 dependencies 模块,含义和maven里面的<dependencies> 标签一样。这个模块里面每一行就是一个依赖,对应的 maven 里面<dependency> 标签,前面的 testRuntimeOnly、implementation 对应的就是 maven里面 <dependency> 标签下的<scope> 标签。以下是一些常见的范围配置选项及其含义:

  1. implementation: 这是最常用的配置选项之一。它表示将依赖项包含在项目的编译路径中,同时也会将其传递给依赖该项目的其他模块。这意味着依赖项将被编译到最终的构建产物中。

  2. compileOnly: 使用该选项可以将依赖项包含在编译路径中,但不会将其传递给依赖该项目的其他模块。这意味着依赖项仅在编译时可用,而不会被打包到最终的构建产物中。

  3. runtimeOnly: 该选项表示依赖项只在运行时可用,而不参与编译过程。依赖项将被添加到运行时类路径中,但不会影响编译产物。

  4. testImplementation: 这个选项用于测试相关的依赖项,它会将依赖项添加到项目的测试编译路径中,以便在单元测试或集成测试中使用。

  5. testCompileOnly: 与 compileOnly 类似,但将依赖项仅包含在测试编译路径中,而不会传递给其他测试模块。

  6. testRuntimeOnly: 该选项表示依赖项仅在测试运行时可用,不会参与测试编译过程。

        最后一个就是 test 模块,用于配置项目的测试相关设置和依赖项。它定义了项目的测试任务和测试依赖,使您能够编写和运行单元测试、集成测试等各种测试。例如指定测试源代码目录、测试报告的生成路径等。

  1. test {
  2. testLogging {
  3. events 'passed', 'skipped', 'failed'
  4. }
  5. reports.html.destination = file("$buildDir/reports/tests")
  6. }

二、多模块

        暂时略过,后面再补充。

三、其他

        顺便提一下,其实 repositories 模块 也可以在 gradle 安装目录下的 init.d目录(如果没有,手动建一个)下配置一个全局的,例如:

  1. allprojects {
  2. repositories {
  3. mavenLocal()
  4. maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
  5. maven { url "https://maven.aliyun.com/repository/central" }
  6. maven { url "https://maven.aliyun.com/repository/releases" }
  7. maven { url "https://maven.aliyun.com/repository/spring" }
  8. maven { url "https://maven.aliyun.com/repository/google" }
  9. maven { name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/" }
  10. mavenCentral()
  11. }
  12. buildscript {
  13. repositories {
  14. maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
  15. maven { url "https://maven.aliyun.com/repository/central" }
  16. maven { url "https://maven.aliyun.com/repository/releases" }
  17. maven { url "https://maven.aliyun.com/repository/spring" }
  18. maven { url "https://maven.aliyun.com/repository/google" }
  19. maven { name "Bstek" ; url 'https://nexus.bsdn.org/content/groups/public/' }
  20. maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
  21. }
  22. }
  23. }

其中,repositories 部分用于指定构建过程中所需的依赖仓库。buildscript 块用于配置构建过程中所需的构建脚本自身的依赖项和仓库。不过即使配置了全局,如果在项目中重新配置了repositories 或者buildscript 模块,那将以项目中的配置稳准,也就是说项目中的配置优先级更高。Gradle 构建系统按照以下顺序解析 repositories 块:

  1. 首先,Gradle 会查找项目目录下的 build.gradle 文件。
  2. 如果在项目的 build.gradle 文件中包含了 repositories 块,Gradle 将使用该配置。
  3. 如果项目的 build.gradle 文件中没有定义 repositories 块,Gradle 将查找 init.d 目录下的 init.gradle 文件。
  4. 如果 init.gradle 文件中定义了 repositories 块,Gradle 将使用该配置。
  5. 如果既没有在项目的 build.gradle 文件中定义 repositories 块,也没有在 init.gradle 文件中定义,Gradle 将使用其默认的配置,通常包括 Maven Central 和 JCenter。

因此,如果在项目的 build.gradle 文件中配置了 repositories 块,Gradle 将使用该配置,并忽略 init.gradle 文件中的配置。

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