• 【Gradle构件工具深度学习】


    1. 课程大纲

    1.1 Gradle入门

    基本介绍、常用指令、项目目录、项目应用

    1.2 与Idea整合

    Groovy语法、整合IDEA、搭建web工程、项目部署

    1.3 Gradle进阶

    生命周期、钩子函数、项目发布、配置文件、Project与Task、Gradle插件
    整合SSM多模块、微服务实战

    2. 常见项目构建工具

    Ant:2000Apache推出的纯Java编写构建工具,通过xml build.xml文件管理项目
    	优点:使用灵活,速度快(快于gradle和maven),
    	缺点:At没有强加任何编码约定的项目目录结构,开发人员需编写繁杂XL文件构建指令对开发人员是一个
    			挑战。
    Maven: 2004Apache组织推出的再次使用xml文件pom.xml虹管理项目的构建工具.
    	优点:遵循一套约定大于配置的项目目录结构,使用统一的GAV坐标进行依赖管理,侧重于包管理。
    	缺点:项目构建过程僵化.配置文件编写不够灵活、不方便自定义组件构建速度慢于d!e,
    Gradle:2012Google推出的基于Groovy语言的全新项目构建工具,集合了AntMaven各自的优势。
    	优点:集Ant脚本的灵活性+Mavn约定大于配置的项目目录优势,支持多种远程仓库和插件,侧重于大项目
    		构建。
    	缺点:学习成本高、资料少、脚本灵活、版本兼容性差等。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    3. 安装gradle

    1. 下载gradle
      官网地址(点击此处跳转):https://gradle.org/releases/
    2. 推荐下载红色圈住的,带有源码
      在这里插入图片描述
    3. 解压到指定目录下,然后复制此路径,配置环境变量
    4. 4.新建系统变量[GRADLE_HOMW=$你复制的路径];将%GRADLE_HOME%\bin添加到PATH环境变量下,然后点击确定
    5. 校验配置是否生效,cmd下执行gradle -v ,如果打印出gradle版本以及JVM厂商信息就说明success!
    6. 配置gradle本地仓库地址:新建系统环境变量 [GRADLE_USER_HOME=$你的maven仓库地址]
    7. 配置阿里云镜像地址:在gradle,init.d目录下新建一个init.gradle文件,并在文件中添加如下配置:
    allprojects {
    	repositories {
        	mavenLocal()
    		maven {name "Alibaba" ; url 'https://maven.aliyun.com/repository/public'}
    		maven {name "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/"}
    		mavenCentral()
    	}
    	buildscript {
    		repositories {
    		maven {name "alibaba"; url :"https://maven.aliyun.com/repository/public "}
    		maven {name  "Bstek" ; url "https://nexus.bsdn.org/content/groups/public/"}
    		maven {name "M2" ; url "https://plugins.gradle.org/m2/"}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4. gradle常用指令

    常用gradle指令作用
    gradle clean清空build目录
    gradle classes编译业务代码和配置文件
    gradle test编译测试代码,生成测试报告
    gradle build构建项目
    gradle build -x test跳过测试构建项目

    注意:gradle的指令要在含有build.gradle的目录执行。

    5. 拓展:init.gradle文件说明 | 仓库地址说明

    init.gradle可以在编译启动前执行这个脚本,比如配置上镜像地址

    有几种方式使用init.gradle呢

    1.	在命令行指定文件,例如: gradle --init-script yourdir/init.gradle -q taskName.你可以多次输入此命
    	令来指定多个init文件
    3.	把init.gradle文件放到USER_HOME/,gradle/目录下
    4.	把以.gradle结尾的文件放到USER_HOME/.gradle/init.d/目录下
    5.	把以.gradle结尾的文件放到GRADLE_HOME/init.d目录下
    如果存在上面的4种方式的2种以上,gradle会按上面的1-4序号依次执行这些文件,如果给定目录下存在多个
    init脚本,会按拼音a-z顺序执行这些脚本,每个nit脚本都存在一个对应的adle实例,你在这个文件中调用的
    所有方法和属性,都会委托给这个gradle实例,每个init脚本都实现了Seript接口。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    仓库地址说明:

    mavenLocal():指定使用本地maven本地仓库,而本地仓库在配置maven时settings文件指定的仓库位置。
    maven {url位置},指定maven仓库,一般用私有仓库地址或其他第三方库。比如阿里云镜像地址
    mavenCentral() 这是Maven的中央仓库,无需配置,直接声明就可以使用。
    jcenter(): Jcenter中央仓库,实际也是用的maven搭建,但相比Maven仓库更友好,通过cdn分发,并且支持https访问,在新版本中已经废弃,替换为了mavenCentral()

    总之,gradle可以通过指定仓库地址为本地maven仓库地址和远程仓库地址相结合的方式,避免每次都会去远程仓库下载依赖库·这种方式也有一定的问题,如果本地maven仓库有这个依赖,就会从直接加载本地依赖,如果本地仓库没有该依赖,那么还是会从远程下载·但是下载的jar不是存储在本地naven仓库中,而是放在自己的缓存目录中,默认在USER_HOME/.gradle/caches目录,当然如果我们配置过GRADLE_USER_HOME环境变量,则会放在GRADLE_USER_HOME/caches目录,那么可不可以将gradle caches指向maven repository。我们说这是不行的,caches下载文件不是按照maven仓库中存放的方式·

    阿里云开发者镜像查询地址:https://developer.aliyun.com/mvn/guide

    6. Wrapper包装器

    6.1 是什么?

    Gradle Wrapper实际上就是对Gradle的一层包装,用于解快实际开发中可能会遇到的不同的项目需要不同版本的Gradle问题。例如:把自己的代码共享给其他人使用,可能出现如下情况:

    • 对方电脑上没有安装gradle
    • 对方电脑上安装了gradle,但是版本太旧了

    这时候,我们就可以考虑使用Gradle Wrapper了。这也是官方建议使用Gradle Wrapper的原因。实际上有了Gradle Wrapper之后,我们本地是可以不配置Gradle的,下载Gradle项目后,使用gade项目自带的wrapper操作也是可以的。

    6.2 使用gradle wrapper

    项目中的gradlew gradlew.cmd脚本用的就是wrapper中规定的gradle版本·参见源码
    而我们上面提到的g红adle指令用的是本地gradle, 所以gradle指令和gradlew指令所使用的gradle版本有可能是不一样的
    gradlew gadlew.cmd的使用方式与gradle使用方式完全一致,只不过把g红adle指令换成了gradlew指令。

    当然我们也可在终端执行gradlew指令时,指定指定一些参数,来控制Wrapper的生成,比如依赖的版本等,如下:

    参数说明
    –gradle-version用于指定使用的gradle版本
    –gradle-distribution-url用于指定下载gradle发行版url地址

    执行gradle wrapper --gradle-version=7.4.2 --gradle-distribution-url=地址

    6.3 什么时候使用gradle?什么时候使用gradle wrapper?

    下载别人的项目或者使用操作以前自己写的不同版本的gradle项目时:用Gradle wrapper,也即gradew
    什么时候使用本地gradle?新建一个项目时:使用gradle指令即可。
    
    • 1
    • 2

    7. Gradle与IDEA整合

    7.1 Groovy简介

    在某种程度上,Groovy可以被视为Java的一种脚本化改良版,Groovy也是运行在JVM上,它可以很好地与Java代码
    及其相关库进行交互操作。它是一种成熟的面向对象编程语言,既可以面向对象编程,又可以用作纯粹的脚本语言。
    大多数有效的Java代码也可以转换为有效的Groovy代码,Groovy和Java语言的主要区别是:完成同样的任务所需的
    Groovy代码比Java代码更少。其特点为:
    >	功能强大,例如提供了动态类型转换、闭包和元编程(metaprogramming)支持
    > 支持函数式编程,不需要main函数
    > 默认导入常用的包
    > 类不支持default作用域,且默认作用域为public。
    > Groovy中基本类型也是对象,可以直接调用对象的方法。
    > 支持DSL(Domain Specific Languages领域特定语言)和其它简洁的语法,让代码变得易于阅读和维护。
    > Groovy是基于Java语言的,所以完全兼容Java语法,所以对于Java程序员学习成本较低。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    详细了解参考官网. 官网地址http://www.groovy-lang.org/documentation.html

    7.2 build.gradle中执行任务Task

    Task "task1" {
    	println "弟弟你真好"
    	doFirst {
    		println "弟弟身材真好"
    	}
    	doLast {
    		println "弟弟的腰 杀人的刀"
    	}
    }
    
    Task "Task2" {
      doLast {
    		println "姐姐喜欢细狗"	
     }
    }
    
    Task2.dependsOn=['task1']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    任务执行: gradle taskName, eg: gradle -i c 执行任务c
    重复依赖的任务只执行一次

    7.3 任务执行

    7.3.1 常见任务

    1. gradle build:编译测试打包
    2. gradle run:运行一个服务,需要application插件支持,并且指定了主启动类才能运行
    3. gradle clean: 清空当前项目的build目录
    4. gradle init :初始化项目使用
    5. gradle wrapper:生成wrapper文件夹的

    7.3.2 项目报告相关任务

    1. gradle projects 列出所选项目及子项目列表,以层次结构显示
    2. gradle tasks 列出所选项目【不包含父子】的分配给任务组的哪些项目
    3. gradle tasks --all 列出所选项目的所有任务
    4. gradle tasks --group=“build setup” 列出所选项目中指定分组的任务
    5. gradle help --task someTask 显示某个任务的详细信息
    6. gradle dependencies 查看整个项目的依赖信息,以依赖树的方式显示
    7. gradle properties 列出所选项目的属性列表
  • 相关阅读:
    人力资源小程序
    轻松添加背景图片并一键褪色的简单操作
    Job Scheduling简介
    FTP客户端c代码功能实现
    rpm(基本命令、Makefile、建立rpmbuild编包)
    2001-2022年上市公司利润表数据
    ChatGPT国内镜像,以及如何使用ChatGPT帮你制作PPT
    Remote Sensing投稿修改意见整理
    链动2+1模式全新版本:会员自裂变,无限链动收益
    SD卡,TF卡,MMC卡,eMMc卡
  • 原文地址:https://blog.csdn.net/qq_39118371/article/details/134476837