Gradle 学习记录

新一代构建工具:Gradle

Gradle 是什么

Gradle 是新一代的项目构建工具,是建立在 Ant 和 Maven 的基础上创建,不再使用 xml 标记语言,而是使用 Groovy 特定的 DSL 语言

Gradle 安装

  • 下载 Gradle
    https://gradle.org/

  • 配置环境变量

    • GRADLE_HOME Gradle 的解压根目录
    • Path Gradle 下的 bin 目录

使用 idea 创建一个 Gradle 项目

选择 Gradle,SDK,勾选语言

在这里插入图片描述
填写 GroupId,ArtifactId,Version

在这里插入图片描述
选择 Gradle 安装目录,选择 JDK

在这里插入图片描述
填写项目名,项目地址

在这里插入图片描述
创建完成后,项目的文件结构为

在这里插入图片描述

构建脚本 Groovy 简要说明

// Java 项目
plugins {
    id 'java'
}

// 组名
group 'xyz.snowflake'
// 版本
version '1.0-SNAPSHOT'

// 源代码兼容版本
sourceCompatibility = 1.8

// 仓库
repositories {
    // 本地仓库
    mavenLocal()
    // 中央仓库
    mavenCentral()
}

// 依赖
dependencies {
    // 测试编译依赖
    testCompile group: 'junit', name: 'junit', version: '4.12'
    // 编译依赖
    // compile
    // compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.2.Final'
}

构件块

Gradle构建中的两个基本概念是项目(project)和任务(task),每个构建至少包含一个项目,项目中包含一个或多个任务。在多项目构建中,一个项目可以依赖于其他项目;类似的,任务可以形成一个关系图来确保他们的执行顺序

项目

  • group 组
  • name id
  • version 版本
  • apply 添加插件 例如 jar, war
  • dependencies 依赖 例如:junit
  • task 添加任务动作
  • ext
  • gradle.properties 属性的其他配置方式

构建生命周期

  • 初始化 -> 有哪些项目
  • 配置 -> 用来生成 task 的依赖顺序
  • 执行 -> 执行 task的 动作代码

依赖管理

用来自动化管理依赖包以及解决依赖之间的冲突

常用的仓库

  • mavenLocal 本地maven仓库
  • mavenCentral/jcenter maven中央仓库
  • 自定义仓库 公司中的仓库
  • 文件仓库(不建议)

maven仓库的写法

    //本地仓库:
    mavenLocal()
    //中央仓库:
    mavenCentral()
    //自己仓库:
    maven {
        url ''
    }

依赖的传递性

解决冲突的步骤

  1. 查看依赖报告
  2. 排除传递性依赖
  3. 强制使用一个版本

解决传递依赖的方法

  1. 排除传递性依赖

    • 排除某一个传递依赖
    compile group: ('org.hibernate', name: 'hibernate-core', version: '5.4.2.Final') {
        // modul 就是 name 属性
        exclude group:'org.slf4j', modul:'slf4j-api'
    }
    
    
    • 排除所有的传递依赖
    compile group: 'org.hibernate', name: 'hibernate-core', version: '5.4.2.Final' {
        transitive = false
    }
    
    
  2. gradle 默认会选择高版本的 jar 包

// 可以改变默认的传递依赖处理策略
configurations.all {
    resolutionStrategy {
        // 当出现传递依赖时,会报错
        failOnVersionConflict()
        // 当出现传递依赖时,会强制使用某一个版本
        force 'org.slf4j:slf4j-api:1.7.24'
    }
}

多项目的构建

构建一个项目 todo

模块之间的依赖关系

在这里插入图片描述

项目构建完成后

在这里插入图片描述

项目之间的范围

allprojects {
    root
    model
    web
    repository
}
subprojects {
    model
    web
    repository
}

所有的项目只比子项目多了一个 root 模块

repositoy 依赖于 model 模块

dependencies {
    compile project(':model')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

web 模块依赖于 repository 和 model 模块,由于依赖的传递性,所以 web 模块只依赖于 repository 模块即可

dependencies {
    compile project(':repository')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

项目的依赖关系

在这里插入图片描述

settings.gradle 文件

rootProject.name = 'test-gradle'
include 'model'
include 'web'
include 'repository'

实现几个功能

  1. 所有项目中应用 java 插件

    allprojects {
        apply plugin: 'java'
    }
    
  2. web 子项目打包成 jar

    apply plugin: 'war'
    

    在这里插入图片描述

  3. 所有项目添加 logback 日志功能

    allprojects {
        apply plugin: 'java'
        dependencies {
            testCompile group: 'junit', name: 'junit', version: '4.12'
        }
    }
    
  4. 统一配置 group 和 version

    新创建一个文件 gradle.properties [文件名必须是这个]

    group = xyz.snowflake
    version = 1.0-SNAPSHOT
    

    在这里插入图片描述

Gradle 测试

Gradle会自动发现需要测试的方法,并在构建时执行

  1. 任何继承自 junit.framework.TestCase 或 groovy.util.GroovyTestCase的类
  2. 任何被 @RunWith注解的类
  3. 任何至少包含一个 @Test 注解的类
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值