Gradle7.4安装与基本使用

这篇具有很好参考价值的文章主要介绍了Gradle7.4安装与基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一.前言

gradle有突出的版本不兼容问题.因此要注意SpringBoot对Gradle的要求,以及IDEA对Gradle的要求.
在IDEA的plugins/lib/gradle中规定了gradle的最大版本号. 在2022.2.1中是6.7 在2022.3.2中是7.4.
其余自行查看该位置的版本控制.不过idea规定的版本号可以更改.
gradle镜像,Java体系,java,intellij-idea,gradle
查看SpringBoot与Gradle的兼容性


二.下载Gradle

Gradle官网地址

gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle
下载完整版解压后
gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle
系统变量配置Gradle仓库
键必须为GRADLE_USER_HOME

gradle镜像,Java体系,java,intellij-idea,gradle
系统变量配置Gradle全局系统变量 gradle的bin目录

gradle镜像,Java体系,java,intellij-idea,gradle
验证 gradle -v
gradle镜像,Java体系,java,intellij-idea,gradle


三.Gradle镜像源-全局级配置

Gradle使用maven定位镜像地址参考: 阿里云云效Maven

全局配置 在Gradle的init.d目录下新建gradle为后缀的文件.
gradle镜像,Java体系,java,intellij-idea,gradle

allprojects {
    repositories {
        maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" }
        maven { name "google" ; url 'https://maven.aliyun.com/repository/google' }
        mavenCentral()
    }

    buildscript { 
        repositories { 
            maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' }
            maven { name "gradle-plugin" ; url 'https://maven.aliyun.com/repository/gradle-plugin' }
            maven { name "spring-plugin" ; url 'https://maven.aliyun.com/repository/spring-plugin' }
            maven { name "M2" ; url 'https://plugins.gradle.org/m2/' }
        }
    }
}

四.配置Gradle wrapper-项目级配置

gradle镜像,Java体系,java,intellij-idea,gradle

解决项目在多台电脑开发时,Gradle环境不一致,idea不兼容等问题.

Gradle指令调用本地的gradle脚本.而在项目中应当运行gradlew才是调用项目中的wrapper脚本

gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle

gradlew wrapper --gradle-version=6.7

gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle

gradle镜像,Java体系,java,intellij-idea,gradle
当执行

gradlew.bat classes
gradlew.bat test
gradlew.bat build

等,会下载gradle相关内容

五.Gradle对测试的支持

gradle镜像,Java体系,java,intellij-idea,gradle

test{
	useJUnitPlatform() // 支持对junit5测试
}

五.生命周期

Gradle项目的生命周期分为三大阶段: Initialization ->Configuration -> Execution.每个阶段都有自己的职责,具体如下图所示:
gradle镜像,Java体系,java,intellij-idea,gradle
Initialization 只执行一次初始化脚本.
Configuration 先执行加载父脚本,再是子脚本,再是孙子脚本
gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle

5.1 settings文件

gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle

六.Gradle任务入门

6.1 任务行为

def map = new HashMap<String,Object>();
//action属性可以设置为闭包,设置task自身的行为
map.put("action",{println "task one.."})

task (map,"task1"){
	// 任务的配置段:在配置阶段执行
	println "最先执行"
	// 任务的行为:在执行阶段执行,doFirst会在doLast执行之前执行
	doFirst {
		println "task1 doFirst"
	}
	doLast {
		println "task1 doLast"
	}
}

task.doFirst {
		println "task1 doFirst outer"
}

task.doLast {
		println "task1 doLast outer"
}

gradle镜像,Java体系,java,intellij-idea,gradle

gradle镜像,Java体系,java,intellij-idea,gradle

6.2 任务依赖方式

gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle

七. Dependencies依赖引入

gradle镜像,Java体系,java,intellij-idea,gradle
gradle镜像,Java体系,java,intellij-idea,gradle

除非涉及到多模块依赖,为了避免重复依赖,咱们会使用api,其它情况我们优先选择implementation,拥有大量的api 依赖项会显著增加构建时间。

7.1 依赖冲突及解决方案

依赖冲突是指 “在编译过程中, 如果存在某个依赖的多个版本, 构建系统应该选择哪个进行构建的问题”,如下所示:
gradle镜像,Java体系,java,intellij-idea,gradle
A、B、C 都是本地子项目 module,log4j 是远程依赖。
编译时: B 用 1.4.2 版本的 log4j,C 用 2.2.4 版本的 log4j,B 和 C 之间没有冲突
打包时: 只能有一个版本的代码最终打包进最终的A对应的jar |war包,对于 Gradle 来说这里就有冲突了

默认下,Gradle 会使用最新版本的 jar 包【考虑到新版本的 jar 包一般都是向下兼容的】,实际开发中,还是建议使用官方自带的这种解决方案。当然除此之外,Gradle 也为我们提供了一系列的解决依赖冲突的方法: exclude 移除一个依赖,不允许依赖传递,强制使用某个版本。
● Exclude 排除某个依赖

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation('org.hibernate:hibernate-core:3.6.3.Final'){
//排除某一个库(slf4j)依赖:如下三种写法都行
exclude group: 'org.slf4j' exclude module: 'slf4j-api'
exclude group: 'org.slf4j',module: 'slf4j-api'
}
//排除之后,使用手动的引入即可。implementation 'org.slf4j:slf4j-api:1.4.0'
}

● 不允许依赖传递 在添加依赖项时,如果设置 transitive 为false,表示关闭依赖传递。即内部的所有依赖将不会添加到编译和运行时的类路径。

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation('org.hibernate:hibernate-core:3.6.3.Final'){
//不允许依赖传递,一般不用
transitive(false)
}
//排除之后,使用手动的引入即可implementation 'org.slf4j:slf4j-api:1.4.0'
}

● 强制使用某个版本

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' implementation('org.hibernate:hibernate-core:3.6.3.Final')
//强制使用某个版本!!【官方建议使用这种方式】
implementation('org.slf4j:slf4j-api:1.4.0!!')
//这种效果和上面那种一样,强制指定某个版本implementation('org.slf4j:slf4j-api:1.4.0'){
version{
strictly("1.4.0")
}
}
}

八.Gradle整合多模块SpringBoot

SpringBoot官网整合说明
gradle镜像,Java体系,java,intellij-idea,gradle

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

gradle镜像,Java体系,java,intellij-idea,gradle

gradle镜像,Java体系,java,intellij-idea,gradle

模块聚合./settings.gradle
gradle镜像,Java体系,java,intellij-idea,gradle

新建.gradle后缀的文件做版本管理
gradle镜像,Java体系,java,intellij-idea,gradle

config.gradle

ext {
    lombokVerison = '1.18.24'
    mybatisPlusVersion = '3.5.2'
    druidVersion = '1.2.8'
    mysqlVersion = '8.0.32'
    commonsVersion = '3.12.0'
}

./build.gradle抽取公共配置, 编码,环境,镜像源

// 加载构建期需要的插件
buildscript {
    repositories {
        maven { name "Alibaba"; url 'https://maven.aliyun.com/repository/public' }
        maven { name "google"; url 'https://maven.aliyun.com/repository/google' }
        maven { name "gradle-plugin"; url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { name "spring-plugin"; url 'https://maven.aliyun.com/repository/spring-plugin' }
        maven { name "M2"; url 'https://plugins.gradle.org/m2/' }
        mavenCentral()
    }
    // 维护插件版本
    dependencies {
        classpath('org.springframework.boot:spring-boot-gradle-plugin:2.6.3')
    }
}
// 导入插件
plugins {
    id 'java-library'
}

group 'com.vector'
version '1.0-SNAPSHOT'

// 读取gradle版本配置
apply from: 'config.gradle'


// 对所有子模块做统一管理
subprojects {
    //添加插件 目前Gradle版本不支持在allprojects下声明plugins,使用的是旧的写法
    apply plugin: 'java-library'
    apply plugin: 'org.springframework.boot' //维护springboot版本号,不单独使用,和下面两个插件一起用
    apply plugin: 'io.spring.dependency-management'// 相当于<dependencyManagement>版本管理
    //基本JDK配置sourceCompatibility = 1.8
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    compileJava.options.encoding "UTF-8"
    compileTestJava.options.encoding "UTF-8"

    tasks.withType(JavaCompile).configureEach {
        options.encoding = "UTF-8"
    }
    // SpringBoot Plugin生效的非常关键的设置
    // 主启动类位置
    bootJar {
        mainClass.set('org.vector.Main')
    }

    //依赖的配置:设置通用的依赖
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
        compileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVerison
    }
    test {
        useJUnitPlatform()
    }
}

project("module01") {
    apply plugin: 'java-library'//支持api
    dependencies {
        compileOnly group: 'org.projectlombok', name: 'lombok', version: lombokVerison
    }
}
project("module02") {
    apply plugin: 'java-library'//支持api
    dependencies {
        // implementation不会进行依赖传递. api可以进行依赖传递
        api project(':module01')
        // mp持久化框架
        implementation group: 'com.baomidou', name: 'mybatis-plus-boot-starter', version: mybatisPlusVersion
        // druid连接池
        implementation group: 'com.alibaba', name: 'druid-spring-boot-starter', version: druidVersion
        // mysql数据库
        implementation group: 'mysql', name: 'mysql-connector-java', version: mysqlVersion
    }
}

project("module03") {
    dependencies {
        // 不需要在继续依赖传递
        implementation project(':module02')
        // spring-boot-starter-web
        implementation 'org.springframework.boot:spring-boot-starter-web'
        //spring-boot-starter-test
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        // spring-boot-starter-aop
        implementation 'org.springframework.boot:spring-boot-starter-aop'
        //spring-boot-starter-data-redis
        implementation 'org.springframework.boot:spring-boot-starter-data-redis'
        // commons工具类
        implementation group: 'org.apache.commons', name: 'commons-lang3', version: commonsVersion
    }
}

gradle镜像,Java体系,java,intellij-idea,gradle
那么可以自行探寻更优雅的写法.

九. Gradle整合微服务SpringCloud

项目结构

gradle镜像,Java体系,java,intellij-idea,gradle
创建version.gradle

ext {
    version = [
            "lombokVerison"     : "1.18.24",
            "mybatisPlusVersion": "3.5.2",
            "druidVersion"      : "1.2.8",
            "mysqlVersion"      : "8.0.32",
            "commonsVersion"    : "3.12.0"
    ]

    // 公共依赖
    dependencies = [
            "lombok"      : "org.projectlombok:lombok:${version.lombokVerison}",
            "druid"       : "com.alibaba:druid-spring-boot-starter:${version.druidVersion}",
            "mysql"       : "mysql:mysql-connector-java:${version.mysqlVersion}",
            "common-lang3": "org.apache.commons:commons-lang3:${version.commonsVersion}",
            "mybatisPlus" : "com.baomidou:mybatis-plus-boot-starter:${version.mybatisPlusVersion}"
    ]


}

./build.gradle文章来源地址https://www.toymoban.com/news/detail-765321.html

description '微服务父工程'

//构建Gradle脚本自身需要的资源,可以声明的资源包括依赖项、第三方插件、maven仓库地址等。
buildscript {
    ext {
        springBootVersion = '2.6.3'
        springCloudversion = '2021.0.1'
        springCloudAlibabaVersion = '2021.1'
        springBootGradlePlugin = '2.6.3'
    }

    repositories {
        maven { name "Alibaba"; url 'https://maven.aliyun.com/repository/public' }
        maven { name "google"; url 'https://maven.aliyun.com/repository/google' }
        maven { name "gradle-plugin"; url 'https://maven.aliyun.com/repository/gradle-plugin' }
        maven { name "spring-plugin"; url 'https://maven.aliyun.com/repository/spring-plugin' }
        maven { name "M2"; url 'https://plugins.gradle.org/m2/' }
        mavenCentral()
    }
    // 维护插件版本
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootGradlePlugin}")
    }
}

group 'com.vector'
version '1.0-SNAPSHOT'

// 读取gradle版本配置
apply from: 'version.gradle'

// 对所有子模块做统一管理
subprojects {
    //添加插件 目前Gradle版本不支持在allprojects下声明plugins,使用的是旧的写法
    apply plugin: 'java-library'
    apply plugin: 'org.springframework.boot' //维护springboot版本号,不单独使用,和下面两个插件一起用
    apply plugin: 'io.spring.dependency-management'// 相当于<dependencyManagement>版本管理

    // 将配置信息加载进声明中.版本控制
    dependencyManagement{
        dependencies {
            for(depJar in rootProject.ext.dependencies){
                dependency depJar.value
            }
        }
        imports {
            // spring-cloud-dependencies
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudversion}"
            // spring-cloud-alibaba-dependencies
            mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}"
        }
    }

    //依赖的配置:设置通用的依赖
    dependencies {
        testImplementation 'org.junit.jupiter:junit-jupiter-api'
        testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
        // spring-boot-starter
        implementation 'org.springframework.boot:spring-boot-starter'
        // spring-cloud-starter-alibaba-nacos-discovery
        implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
        // spring-cloud-starter-alibaba-nacos-config
        implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
        // spring-cloud-alibaba-sentinel-gateway
        implementation 'com.alibaba.cloud:spring-cloud-alibaba-sentinel-gateway'

    }
    //基本JDK配置sourceCompatibility = 1.8
    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    compileJava.options.encoding "UTF-8"
    compileTestJava.options.encoding "UTF-8"

    tasks.withType(JavaCompile).configureEach {
        options.encoding = "UTF-8"
    }

    test {
        useJUnitPlatform()
    }
}

project("module01") {
    description ("微服务模块1")
    apply plugin: 'java-library'//支持api
    dependencies {
        //lombok
        api "org.projectlombok:lombok"
        api "mysql:mysql-connector-java"
        api "org.apache.commons:commons-lang3"
    }
}
project("module02") {
    description ("微服务模块2")
    apply plugin: 'java-library'//支持api
    dependencies {
        // mp持久化框架
        implementation 'com.baomidou:mybatis-plus-boot-starter'
        // druid-spring-boot-starter
        implementation 'com.alibaba:druid-spring-boot-starter'
        // mysql数据库
        implementation 'mysql:mysql-connector-java'
    }
}

project("module03") {
    description ("微服务模块3")
    dependencies {
        // spring-boot-starter-web
        implementation 'org.springframework.boot:spring-boot-starter-web'
        //spring-boot-starter-test
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
        // spring-boot-starter-aop
        implementation 'org.springframework.boot:spring-boot-starter-aop'
        //spring-boot-starter-data-redis
        implementation 'org.springframework.boot:spring-boot-starter-data-redis'
        // commons工具类
        implementation 'org.apache.commons:commons-lang3'
    }
}



到了这里,关于Gradle7.4安装与基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Gradle 设置全局镜像源

    复制 init.gradle.kts 文件到 Windows 的 %USERPROFILE%/.gradle 或者 Linux 的 ~/.gradle 目录下。也可以直接复制文末的代码为 init.gradle.kts 。 Gradle 不支持镜像源的直接设置,只能通过 maven() 方法设置一个新的 Maven 仓库地址。 在 init.gradle 中调用 maven() 会导致镜像仓库排在上游仓库之后,会

    2024年02月08日
    浏览(44)
  • Android gradle 配置阿里镜像

    要在Android Gradle中配置阿里镜像,可以按照以下步骤进行操作: 打开项目中的 build.gradle 文件。 在 build.gradle 文件中添加阿里镜像的地址,如下所示: 保存并关闭 build.gradle 文件。 在Android Studio中点击 “Sync Now” 按钮,使配置生效。 通过以上步骤,就可以在Android Gradle中成功

    2024年02月03日
    浏览(40)
  • Gradle的详细安装配置及使用教程

    到Gradle官网,官网地址:https://gradle.org/releases/。下载对应的版本,本文安装的是 4.3.1 版本。 下载完成后解压 配置环境变量,新建名为 GRADLE_HOME 值为你的 Gradle 安装(解压)路径的环境变量 然后将 %GRADLE_HOME%bin 添加到 Path 环境变量中,注意与前一个变量需要用 ; 隔开,然后

    2024年02月04日
    浏览(47)
  • Gradle构建系统macOS安装与使用

    1.打开gradle.org并点击安装  2.先决条件  ,确认安装JDK1.8或者更高版本已安装  在终端输入brew install gradle进行安装  安装成功如下:  查看安装版本号gradle -v  使用gradle 1.创建目录demo并进入该目录 2.gradle init 使用Gradle开始构建  输入2开始构建应用 输入3然后输入yes开始构建jav

    2024年02月09日
    浏览(38)
  • AndroidStudio 设置gradle从国内镜像网站下载

    大家在用AndroidStudio创建项目时,经常会出现下面的情况: 这里需要下载gradle构建工具,进行项目构建。 ———————————————————————————————— ps: (1)官网地址:https://services.gradle.org/distributions/ (2)腾讯镜像 Gradle下载地址:https://mirro

    2024年04月16日
    浏览(69)
  • Flutter配置Gradle镜像,解决国内下载慢问题

    程序运行时会卡在 Running Gradle task \\\'assembleDebug\\\'... 如下提示信息 此时Gradle正在下载gradle构建工具以及相关依赖库,由于官方gradle默认配置的依赖下载服务器处于国外,国内用户访问非常缓慢,常常一个依赖下载就要花半天时间,好在国内有阿里、清华等镜像源,我们可以配置

    2024年02月05日
    浏览(67)
  • android studio gradle 加载慢国内镜像解决(2022版)

    设置 包 的国内镜像 pluginManagement {     repositories {              maven { url \\\'https://maven.aliyun.com/repository/google\\\' }         maven { url \\\'https://maven.aliyun.com/repository/public\\\' }         maven { url \\\'https://maven.aliyun.com/repository/gradle-plugin\\\' }         google()         mavenCentral()         gradl

    2024年02月08日
    浏览(46)
  • Android、Android Studio 和 Gradle 是如何使用 Java 的

    可以肯定地说,每个人都知道 Android 使用 Java。然而,“使用 Java ”的含义范围相当大。因此,在本文中,我将介绍 Android 设备和我们用于 Android 开发的各种工具是如何使用 Java 平台的。 让我们从结论开始——下图显示了 Java 在 Android 生态系统中的作用: 使用 Java 编程语言编

    2024年02月10日
    浏览(44)
  • Android构建错误“您的构建当前配置为使用Java 19和Gradle 7.5”

    经反复研究,是Java 19.02和Gradle 7.5的版本匹配有问题,修改配置,下载Gradle 7.6后,问题立刻解决。 我的Android Studio版本是电鳗版 解决办法就是把 gradle-wrapper.properties 文件 #Sat Feb 25 22:42:47 CST 2023 distributionBase=GRADLE_USER_HOME distributionUrl=https://services.gradle.org/distributions/gradle-7.5-bin

    2024年02月05日
    浏览(39)
  • JAVA新实战1:使用vscode+gradle+openJDK21搭建java springboot3项目开发环境

            作为一个干了多年的全栈技术工程师,厌倦了使用盗版IDE,近些年开发Java一直使用IntelliJ IDEA进行Springboot后端项目开发,对于IntelliJ IDEA 授权问题,一直花钱买学生类的授权,但经常被屏蔽,无法使用,又不舍得花大钱买企业版,索性不再使用了。决定改用 VsCode+Gr

    2024年02月03日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包