build.gradle标签详解

一、简介

Gradle是一个开源的构建自动化工具,主要用于Java、Groovy和其他JVM语言的项目。它使用一个基于Groovy或Kotlin的特定领域语言(DSL)来声明项目设置,从而摒弃了基于XML的繁琐配置。build.gradle是Gradle项目的核心配置文件,它定义了项目的构建逻辑,包括依赖关系、任务、插件和其他构建相关的设置。

二、build.gradle基础结构

build.gradle文件中,通常包含以下几个部分:

  1. 插件:通过plugins标签应用所需的插件,如Java插件、Android插件等。插件可以为项目添加新的任务、属性和方法。
  2. 仓库:通过repositories标签配置项目的仓库,指定Gradle从哪些仓库下载依赖项。常见的仓库有Maven Central、JCenter和自定义的Maven仓库。
  3. 依赖项:通过dependencies标签声明项目所需的各种库和框架的依赖关系。Gradle会自动下载和管理这些依赖项。
  4. 任务:通过任务定义项目的构建过程。Gradle提供了许多内置任务,如编译、测试和打包等。开发者也可以定义自定义任务来执行特定的构建逻辑。

三、build.gradle标签详解

plugins标签

plugins标签用于声明并应用项目所需的插件。插件可以扩展Gradle的功能,为项目添加新的任务、属性和方法。在plugins标签中,可以使用id属性指定插件的标识符,Gradle会自动下载并应用该插件。

plugins {id 'java' // 应用Java插件id 'org.springframework.boot' version '2.5.4' // 应用Spring Boot插件并指定版本号
}

repositories标签

repositories标签用于配置项目的仓库。Gradle需要从仓库中获取项目依赖的库和插件。在repositories标签中,可以指定多个仓库,Gradle会按照声明的顺序依次查找依赖项。

repositories {mavenCentral() // 使用Maven中央仓库jcenter() // 使用JCenter仓库(已弃用)maven { url 'https://example.com/repo' } // 使用自定义的Maven仓库
}

dependencies标签

dependencies标签用于声明项目所需的各种库和框架的依赖关系。在dependencies标签中,可以使用不同的配置来指定依赖项的作用范围和传递性。

dependencies {implementation 'com.google.guava:guava:30.1-jre' // 编译时依赖,传递性testImplementation 'junit:junit:4.13.2' // 测试时依赖,不传递runtimeOnly 'com.h2database:h2:1.4.200' // 运行时依赖,不参与编译
}

task标签

task标签用于定义自定义任务,可以指定任务的名称、类型、依赖关系和执行逻辑。

task customTask {doLast {println 'Executing custom task'}
}

四、高级配置与技巧

  1. 自定义属性:通过ext关键字定义自定义属性,可以在构建脚本中共享和使用这些属性。

  2. 构建脚本模块化:对于大型项目,可以将构建逻辑拆分成多个脚本文件,并通过apply from语句引入。

  3. 多项目构建:对于包含多个子项目的复杂项目,可以使用settings.gradle文件定义项目的层次结构和包含的子项目。

  4. 构建缓存:Gradle支持构建缓存,通过重用先前构建的输出,可以显著减少构建时间。

  5. Gradle Wrapper:Gradle Wrapper是一个便捷的构建工具包装器,它可以确保每个开发者使用相同版本的Gradle进行构建。

如下:
build.gradle 文件

plugins {id 'java' // 应用Java插件id 'application' // 如果需要打包成可执行应用,可以加上这个插件
}repositories {mavenCentral() // 使用Maven中央仓库// 还可以添加其他的仓库,如jcenter()(虽然它现在已经被废弃)或者自定义的Maven仓库
}dependencies {// 声明项目依赖implementation 'com.google.guava:guava:30.1-jre' // 例如,添加Google Guava库testImplementation 'junit:junit:4.13.2' // 添加JUnit测试库
}application {mainClassName = 'com.example.Main' // 设置主类,仅当使用'application'插件时需要
}// 配置Java编译选项
java {sourceCompatibility = JavaVersion.VERSION_1_8 // 设置源代码兼容性,例如Java 8targetCompatibility = JavaVersion.VERSION_1_8 // 设置目标代码兼容性,例如Java 8
}// 如果有需要,可以配置自定义的源代码集
sourceSets {main {java {srcDirs = ['src/main/java'] // 设置主源代码目录}resources {srcDirs = ['src/main/resources'] // 设置主资源目录}}test {java {srcDirs = ['src/test/java'] // 设置测试源代码目录}resources {srcDirs = ['src/test/resources'] // 设置测试资源目录}}
}// 配置测试任务
test {useJUnit() // 使用JUnit进行测试testLogging {events "passed", "skipped", "failed" // 显示测试通过、跳过和失败的事件}
}// 如果有需要,可以添加自定义任务
task customTask {doLast {println 'This is a custom task!'}
}// 配置打包任务,例如创建一个可执行的JAR
jar {  manifest {  attributes 'Main-Class': 'com.example.Main'  }  doLast {  copy {  from 'some/directory'  into archiveBaseDir.get().asFile.toPath('some/path/in/jar')  }  }  
}

这个脚本配置了一个Java项目,应用了Java插件,设置了源代码和资源的目录,声明了项目依赖,配置了Java编译选项,定义了测试任务,并且创建了一个可执行的JAR文件。

五、总结

通过对build.gradle标签的详细解析,我们可以看到Gradle构建脚本的强大和灵活。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构设计师教程(十五)面向服务架构设计理论与实践

面向服务架构设计理论与实 15.1 SOA的相关概念15.1.1 SOA的定义15.1.2 业务流程与BPEL15.2 SOA的发展历史15.2.1 SOA的发展历史15.2.2 国内SOA的发展现状与国外对比15.2.3 SOA的微服务化发展15.3 SOA的参考架构15.4 SOA主要协议和规范15.4.1 UDDI协议15.4.2 WSDL规范15.4.3 SOA…

清理Docker环境

清理Docker环境:有时,Docker环境可能会出现一些问题,导致网络连接故障。您可以尝试清理Docker环境并重新启动。可以尝试运行以下命令: 复制 docker-compose down docker system prune -a docker-compose up docker-compose up 和…

Windows 下 TFTP 服务搭建及 U-Boot 中使用 tftp 命令实现文件下载

目录 Tftpd32/64文件下载更多内容 TFTP(Trivial File Transfer Protocol,简单文件传输协议)是 TCP/IP 协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务,端口号为 6…

Vue.js动画库

1、vue2-animate https://animate.style/ 地址:https://www.npmjs.com/package/vue2-animate一个可以在你的网站中即用型跨浏览器动画库,非常适合主页、滑块和动画引导提示。这是Animate.css 的一个端口,用于 Vue.js 2.0/3.0 和Alpines.js …

免费SSL申请和自动更新

当前是在mac下操作 安装certbot # mac下brew安装即可 brew install certbotcentos 安装 centos安装文档 申请泛解析证书 sudo certbot certonly --manual --preferred-challengesdns -d *.yourdomain.com## 输出 Saving debug log to /var/log/letsencrypt/letsencrypt.lo…

[Android] Android文件系统中存储的内容有哪些?

文章目录 前言root 文件系统/system 分区稳定性:安全性: /system/bin用来提供服务的二进制可执行文件:调试工具:UNIX 命令:调用 Dalvik 的脚本(upall script):/system/bin中封装的app_process脚本 厂商定制的二进制可执行文件: /system/xbin/system/lib[64]/system/…

Web前端主题色更换实现方式全解析(二)

Web前端主题色更换实现方式全解析(一) Web前端主题色更换实现方式全解析(二) 文章目录 一、基于前端框架的主题色切换1. Vue.js实现方式1.1 使用Vue的动态样式绑定1.2 结合Vuex管理主题色状态1.3 示例代码与效果展示 2. 前端框架通…

plink2R

您尝试安装的 plink2R 包与您当前的R版本不兼容。错误消息表明,该包可能没有为您当前的R版本提供。 为了解决这个问题,您可以尝试以下方法: 更新R版本:考虑升级到最新版本的R,因为新版本的R可能支持 plink2R 包。您可…

代码随想录算法训练营Day37|738.单调递增的数字、贪心算法总结

目录 738.单调递增的数字 方法一:暴力解法 方法二:贪心解法 贪心算法总结 738.单调递增的数字 题目链接 文章链接 方法一:暴力解法 class Solution { private:// 各位递增判断函数bool checkNum(int num) {int max 10;while (num) {int …

6.php开发-个人博客项目Tp框架路由访问安全写法历史漏洞

目录 知识点 php框架——TP URL访问 Index.php-放在控制器目录下 ​编辑 Test.php--要继承一下 带参数的—————— 加入数据库代码 --不过滤 --自己写过滤 --手册(官方)的过滤 用TP框架找漏洞: 如何判断网站是thinkphp&#x…

nvm安装与使用教程

目录 nvm是什么 nvm安装 配置环境变量 更换淘宝镜像 安装node.js版本 nvm list available 显示可下载版本的部分列表 nvm install 版本号 ​编辑 nvm ls 查看已经安装的版本 ​编辑 nvm use 版本号(切换想使用的版本号) nvm是什么 nvm是node.js version management的…

2023全球固态硬盘SSD总结与展望

根据有关市场研究机构的报告显示,全球固态硬盘(SSD)市场预计将以15.4%的复合年增长率增长,并将在2030年底从2023年的4560万美元增至12430万美元。近年来,由于技术进步和对高性能存储解决方案需求的增长,该市…

Qt安装MYSQL驱动

Qt安装MYSQL驱动 1 Qt配置MySQL驱动 在使用Qt连接数据库前需要确定当前Qt支持的数据库驱动模块有哪些。 1.1 Qt数据库驱动 Qt SQL模块是Qt提供的一个访问数据库的接口,支持多种平台下使用不同类型的数据库,在这个过程中,数据库驱动负责与…

mfc110.dll丢失是什么意思?全面解析mfc110.dll丢失的解决方法

在使用计算机的过程中,用户可能会遭遇一个常见的困扰,即系统提示无法找到mfc110.dll文件。这个动态链接库文件(DLL)是Microsoft Foundation Classes(MFC)库的重要组成部分,对于许多基于Windows的…

代码随想录刷题笔记 DAY12 | 二叉树的理论基础 | 二叉树的三种递归遍历 | 二叉树的非递归遍历 | 二叉树的广度优先搜索

Day 12 01. 二叉树的理论基础 1.1 二叉树的种类 满二叉树:除了叶子节点以外,每个节点都有两个子节点,整个树是被完全填满的完全二叉树:除了底层以外,其他部分是满的,底部可以不是满的但是必须是从左到右连…

数据结构之受限线性表

受限线性表 对于一般线性表,虽然必须通过遍历逐一查找再对目标位置进行增、删和查操作,但至少一般线性表对于可操作元素并没有限制。说到这里,大家应该明白了,所谓的受限线性表,就是可操作元素受到了限制。 受限线性表…

【Web前端开发基础】CSS3之Web字体、字体图标、平面转换、渐变

CSS3之Web字体、字体图标、平面转换、渐变 目录 CSS3之Web字体、字体图标、平面转换、渐变一、Web字体1.1 Web字体概述1.2 字体文件1.3 font-face 规则 二、字体图标2.1 字体图标2.2 字体图标的优点2.3 图标库2.4 下载字体包2.5 字体图标的使用步骤2.6 字体图标使用注意点2.7 上…

「 典型安全漏洞系列 」06.路径遍历(Path Traversal)详解

引言:什么是路径遍历?如何进行路径遍历攻击并规避常见防御?如何防止路径遍历漏洞。 1. 简介 路径遍历(Path Traversal)是一种安全漏洞,也被称为目录遍历或目录穿越、文件路径遍历。它发生在应用程序未正确…

mysql生成最近24小时整点/最近30天/最近12个月时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

在浏览器输入一个url,浏览器会发生什么?

文章目录 在浏览器输入一个URL后,浏览器会经历以下主要的步骤: 1、URL解析: 浏览器首先会解析输入的URL,包括协议(比如http)、域名、端口、路径和查询参数等。 2、DNS解析: 如果输入的是域名而…