Gradle的安装配置及使用

Gradle是一种新的构建工具,主要用于自动化地进行软件构建、测试、发布、部署和软件打包。与传统的构建工具相比,Gradle采用了一种叫做Groovy的语言,其语法与Java非常相似。

以下是Gradle的安装配置及使用的详细步骤:

一、安装配置(官网下载链接)

  1. 下载Gradle的二进制文件(.zip格式)。
  2. 解压下载的.zip文件到所选目录。在Windows系统中,可以解压到如“C:\Gradle”这样的路径下;在Linux或macOS系统中,可以解压到如“/usr/local/gradle”这样的路径下。
  3. 配置环境变量。在Windows系统中,需要右击“我的电脑” -> “属性” -> “高级系统设置” -> “环境变量”,在“系统变量”下点击“新建”,添加一个名为GRADLE_HOME的变量,其值为Gradle解压的路径,如“C:\Gradle\gradle-x.x.x”(x.x.x为版本号)。然后,在“系统变量”中找到Path变量,点击“编辑”,在变量值的末尾添加“;%GRADLE_HOME%\bin;”。在Linux或macOS系统中,配置环境变量的方法略有不同,但大体步骤相似。
  4. 验证安装。打开命令提示符(在Windows中)或终端(在Linux或macOS中),并输入“gradle -v”来验证安装。如果安装成功,你应该能看到Gradle的版本信息。

二、使用

Gradle的使用主要是通过编写构建脚本(build script)来完成的。这些脚本通常使用Groovy或Kotlin DSL(领域特定语言)编写,并定义了项目的构建逻辑。

  1. 创建一个新的Gradle项目或打开一个已存在的项目。
  2. 在项目的根目录下,你会找到一个名为“build.gradle”的文件(对于使用Groovy的项目)或“build.gradle.kts”的文件(对于使用Kotlin DSL的项目)。这个文件就是Gradle的构建脚本,它定义了项目的各种构建任务和配置。
  3. 在构建脚本中,你可以定义项目的依赖、插件、任务等。例如,你可以使用dependencies块来定义项目的依赖,使用plugins块来应用插件,使用task关键字来定义任务等。
  4. 在命令行中,你可以使用gradle tasks命令来查看项目中定义的所有任务,使用gradle build命令来执行构建任务等。

构建脚本编写

构建脚本是Gradle项目的核心,它定义了项目的构建逻辑和配置。构建脚本可以使用Groovy或Kotlin DSL编写,选择哪种取决于个人或团队的偏好。

示例:Groovy DSL构建脚本
plugins {
    id 'java'
    id 'org.springframework.boot' version '2.5.5'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'org.junit.jupiter:junit-jupiter-api'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

jar {
    manifest {
        attributes(
            'Main-Class': 'com.example.MainApplication'
        )
    }
}

test {
    useJUnitPlatform()
}

在上面的示例中,我们定义了一个Java Spring Boot项目的构建脚本。我们应用了javaorg.springframework.boot插件,设置了依赖的仓库,声明了项目的依赖,以及自定义了JAR包的主类和测试配置。

插件的使用

Gradle插件提供了许多构建和测试任务,以及其他功能,可以大大简化项目的构建过程。你可以在应用插件时指定插件的版本,Gradle会自动下载并应用插件。

在构建脚本中,使用plugins块来应用插件。例如:

plugins {
    id 'java'
    id 'war'
    id 'org.gretty' version '3.0.5'
}

依赖管理

Gradle通过声明项目的依赖关系,能够自动下载、编译和打包项目所需的库。依赖可以指定在dependencies块中。Gradle支持从多种仓库下载依赖,例如Maven中央仓库。

dependencies {
    implementation 'com.google.guava:guava:30.1-jre'
    api 'org.springframework.boot:spring-boot-starter-web'
    testImplementation 'junit:junit:4.13'
}

Gradle Wrapper的使用

Gradle Wrapper是Gradle项目的一个组成部分,它允许开发者在无需事先安装Gradle的情况下,在项目的本地构建环境中使用特定版本的Gradle。这对于确保团队成员使用相同版本的Gradle构建项目非常有用。

要配置Gradle Wrapper,可以在命令行中运行以下命令:

gradle wrapper --gradle-version x.x.x

其中x.x.x是你想要使用的Gradle版本号。这将在项目的根目录下生成gradlew(Unix/Linux/macOS)或gradlew.bat(Windows)脚本以及相应的Wrapper配置文件。之后,你可以使用这些脚本来代替命令行中的gradle命令,它们会自动下载并使用指定版本的Gradle。

构建和运行任务

Gradle项目是由一组任务(task)组成的。你可以通过运行特定任务来执行构建、测试、打包等操作。

在命令行中,你可以使用以下命令来运行任务:

./gradlew build  # 在Unix/Linux/macOS上
gradlew.bat build  # 在Windows上

这将会执行build任务,该任务通常包含了编译、测试和打包等子任务。

Gradle还提供了丰富的命令行选项和参数,可以帮助你更灵活地控制构建过程。你可以通过运行gradle --helpgradlew --help来查看可用的选项和参数。

多项目构建

Gradle支持多项目构建,这意味着你可以在一个根项目中定义多个子项目,每个子项目都可以有自己的构建脚本和依赖。这非常适合于大型项目,其中可能包含多个模块或组件。

在多项目构建中,根项目的settings.gradle(或settings.gradle.kts)文件用于定义包含哪些子项目。然后,你可以在根项目的构建脚本中定义公共配置,并在子项目的构建脚本中定义特定配置。

// 在根项目的settings.gradle中
rootProject.name = 'my-multiproject-build'
include 'subproject1', 'subproject2'

// 在根项目的build.gradle中
subprojects {
    apply plugin: 'java'

    repositories {
        mavenCentral()
    }
}

project(':subproject1') {
    dependencies {
        implementation 'com.example:library:1.0.0'
    }
}

自定义任务和类型

Gradle允许你定义自己的任务和类型,以满足项目的特定需求。你可以使用Groovy或Kotlin DSL来扩展Gradle的功能。

定义自定义任务:

task customTask {
    doLast {
        println 'This is a custom task.'
    }
}

定义自定义类型:

task customTypeTask(type: CustomTaskType) {
    // 配置自定义类型的属性
}

class CustomTaskType extends DefaultTask {
    @Input
    String customInput

    @TaskAction
    void performTask() {
        println "Custom task with input: $customInput"
    }
}

配置文件

Gradle支持从外部配置文件(如.properties.yml文件)读取配置信息。这有助于将构建逻辑与配置数据分离,使构建脚本更加清晰和可维护。

你可以使用ext关键字在构建脚本中定义额外的属性,并从配置文件中加载这些属性的值。

ext {
    // 从配置文件加载属性
    config = new Properties()
    file('config.properties').withInputStream { stream ->
        config.load(stream)
    }
}

task printConfig {
    doLast {
        println "Config value: ${config['key']}"
    }
}

发布构建产物

Gradle可以配置为将构建产物发布到远程仓库,如Maven Central或JCenter。这允许其他人使用你的库或模块作为他们项目的依赖。

发布构建产物通常涉及配置publishing插件,并指定发布仓库的URL和认证信息。

plugins {
    id 'maven-publish'
}

publishing {
    repositories {
        maven {
            url = uri('https://maven.example.com/repository')
            credentials {
                username = 'your-username'
                password = 'your-password'
            }
        }
    }
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

持续集成和持续部署(CI/CD)

Gradle可以很好地与CI/CD工具集成,如Jenkins、Travis CI或GitLab CI。你可以配置CI/CD管道来自动执行构建、测试和部署任务,以确保代码的质量和稳定性。

在CI/CD配置中,你通常会指定Gradle Wrapper的路径来确保使用正确的Gradle版本,并定义一系列步骤来执行构建和测试任务。

这只是Gradle功能的一小部分,Gradle还有更多高级特性和插件可供探索和使用。通过不断学习和实践,你可以充分利用Gradle的强大功能来优化项目的构建和发布过程。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/575138.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

项目管理中常用的三个工具:甘特图、看板、燃尽图

在日常项目管理的实践中,为了更有效地追踪项目进度、优化资源配置和提高团队协作效率,管理者常常会借助一些工具来辅助工作。这些工具的本质在于将抽象复杂的项目管理任务具象化、简单化,以更直观、方便的方式呈现出来。 以下介绍项目管理中…

基于Springboot的在线动漫信息平台

基于SpringbootVue的在线动漫信息平台的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 热门动漫 文章专栏 会员分享 论坛信息 动漫资讯 后台登录 动漫分类管…

在Spring Boot应用中实现阿里云短信功能的整合

1.程序员必备程序网站 天梦星服务平台 (tmxkj.top)https://tmxkj.top/#/ 2.导入坐标 <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version></dependency><…

SpringCloud之Feign集成Ribbon

Feign定义【可跳过】 Spring Cloud Feign是一个声明式的伪Http客户端&#xff0c;它使得写Http客户端变得更简单。其英文表意为“假装&#xff0c;伪装&#xff0c;变形”&#xff0c;是一个http请求调用的轻量级框架&#xff0c;可以以Java接口注解的方式调用Http请求&#x…

[Rust开发]在Rust中使用geos的空间索引编码实例

geos的空间索引用的是STRTree&#xff0c;这是一种基于STR算法的四叉树索引&#xff0c;有如下特点&#xff1a; 使用Sort-Tile-Recursive (STR) 算法创建的仅查询的R-tree空间索引 STR(Sort-Tile-Recursive,递归网格排序) 基本思想是将所有的矩形以“tile”的方式分配到r/n&a…

netsh int ipv4 show dynamicport tcp动态端口port设置

netsh int ipv4 show dynamicport tcp netsh int ipv4 set dynamicport tcp start4000 num10000

STM32_舵机的实战

一、配置相应的管脚 二、写代码

linux+ndk把jni制作成so库供apk使用(带线程的回调)

我们就不墨迹了,直接开始,往往我们需要jni给我们回调一些数据,并且是实时的回调,这里我们就需要多写一些东西了 1.先在安卓里面设置好接口以及回调,我自己给你们看源代码 package com.example.myndkapplicationimport android.os.Bundle import android.util.Log import androi…

基于Python实现心脏病数据可视化DEA+预测【500010103.1】

一、数据说明 该心脏病数据集是通过组合 5 个已经独立可用但以前未合并的流行心脏病数据集来策划的。在这个数据集中&#xff0c;5 个心脏数据集结合了 11 个共同特征&#xff0c;使其成为迄今为止可用于研究目的的最大心脏病数据集。 该数据集由 1190 个实例和 11 个特征组成…

wstunnel (websocket模式ssh)

接上一篇 修改客户端运行参数 ssh -o ProxyCommand"./wstunnel client -L stdio://%h:%p ws://192.168.254.131:8080" 127.0.0.1 其中127.0.0.1为服务端的本地ssh访问&#xff0c;可以修改为通过服务端访问其他设备的ssh服务。例如&#xff1a; ssh -o ProxyComma…

线性代数-行列式-p1 矩阵的秩

目录 1.定义 2. 计算矩阵的秩 3. 矩阵的秩性质 1.定义 2. 计算矩阵的秩 3. 矩阵的秩性质

JavaEE——spring MVC请求处理

目录 主要目的&#xff1a; 1. Spring web 项目搭建 2. 添加依赖 3. 配置插件 4. 配置设置类 5. 编写controller层类 6. 编写测试的http请求 主要目的&#xff1a; 创建一个spring web项目&#xff1b; 创建控制类&#xff1b; 掌握如何配置MVC&#xff1b; 编写htt…

HTTP 网络协议的请求头信息,响应头信息,具体详解(2024-04-26)

1、通用头部 2、常见的 HTTP请求头信息 HTTP 响应头信息是服务器在响应客户端的HTTP请求时发送的一系列头字段&#xff0c;它们提供了关于响应的附加信息和服务器的指令。 3、常见的 HTTP 响应头信息 响应头向客户端提供一些额外信息&#xff0c;比如谁在发送响应、响应者的功…

AI预测福彩3D第9套算法实战化测试第3弹2024年4月25日第3次测试

今天继续进行新算法的测试&#xff0c;今天是第3次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月25日福彩3D预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;6、4、3、7、2、8 十位&#xff1a;8、4、9、3、1、0 个位&#xff1a;7、6、9、…

审稿快、出版效率高的8本检验医学中文期刊推荐!

常笑医学整理了8本比较好投的检验医学中文期刊&#xff0c;以及期刊详细参数&#xff0c;供大家在论文投稿时参考。这些检验医学期刊&#xff0c;审稿快、出版效率高&#xff0c;有需要的赶紧收藏&#xff01; 1.《中华检验医学杂志》 &#xff08;详细投稿信息请点击刊物名称…

【网站项目】考研助手

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

uniapp-css:拼图(不规则图片拼插)、碎片

拼图案例样式 高斯模糊的地方可以对应的使用fliter属性和opacity来调节样式。 其余碎片和图片对应: 这段代码实现了一个拼图效果的Vue组件。以下是对代码的详细解析: 模板部分: 在模板中使用v-for指令遍历imgs数组中的每个图片对象,为每个图片创建一个元素。 使用:cla…

Day 31 贪心算法理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

贪心算法理论基础 ​ 贪心算法的本质&#xff1a;选择每一个阶段的局部最优&#xff0c;从而达到系统的整体最优&#xff1b; ​ 贪心的套路就是没有套路&#xff0c;最好的策略就是举反例&#xff0c;因为大多数时候并不要求严格证明&#xff0c;只需要得到普遍性结论即可&a…

优化大模型的解释性提示以提升文本推理性能:一种无监督数据驱动的方法

介绍一篇大模型前沿论文&#xff0c;《Explanation Selection Using Unlabeled Data for Chain-of-Thought Prompting》。在这篇论文中&#xff0c;作者Xi Ye和Greg Durrett探讨了如何通过优化大语言模型&#xff08;LLMs&#xff09;的解释性提示来提升文本推理任务的性能。他…

CSS 标准流 浮动 Flex布局

目录 1. 标准流2. 浮动2.1 清除浮动 3. Flex 布局3.1 Flex 组成3.2 Flex 布局 - 主轴与侧轴对齐方式3.2.1 主轴对齐方式3.2.2 侧轴对齐方式 3.3 Flex 布局 - 修改主轴方向3.4 Flex 布局 - 弹性伸缩比3.5 Flex 布局 - 弹性盒子换行3.6 Flex 布局 - 行对齐方式 1. 标准流 标准流…
最新文章