当前位置: 首页 > news >正文

Gradle中的buildScript代码块

PS: 在build script中的task

apply plugin: 'spring-boot' 需要 classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE")

apply plugin: 'com.moowork.gulp' 需要classpath 'com.moowork.gradle:gradle-gulp-plugin:0.10'

在编写Gradle脚本的时候,在build.gradle文件中经常看到这样的代码:

build.gradle

buildScript {repositories {mavenCentral()
}
}repositories {mavenCentral()
}

这样子很容易让人奇怪,为什么repositories要声明两次哪?buildscript代码块中的声明与下半部分声明有什么不同?

其实答案非常简单。buildscript中的声明是gradle脚本自身需要使用的资源。可以声明的资源包括依赖项、第三方插件、maven仓库地址等。

而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。

gradle是由groovy语言编写的,支持groovy语法,可以灵活的使用已有的各种ant插件、基于jvm的类库,

这也是它比maven、 ant等构建脚本强大的原因。虽然gradle支持开箱即用,但是如果你想在脚本中使用一些第三方的插件、类库等,

就需要自己手动添加对这些插件、类库的 引用。而这些插件、类库又不是直接服务于项目的,而是支持其它build脚本的运行。

所以你应当将这部分的引用放置在buildscript代码块中。 gradle在执行脚本时,会优先执行buildscript代码块中的内容,

然后才会执行剩余的build脚本。

举个例子,假设我们要编写一个task,用于解析csv文件并输出其内容。虽然我们可以使用gradle编写解析csv文件的代码,

但其实 apache有个库已经实现了一个解析csv文件的库供我们直接使用。我们如果想要使用这个库,

需要在gradle.build文件中加入对该库的引用。

build.gradle

buildscript {repositories {mavenLocal()mavenCentral()}dependencies {classpath 'org.apache.commons:commons-csv:1.0'}
}import org.apache.commons.csv.*task printCSV() {doLast {def records = CSVFormat.EXCEL.parse(new FileReader('config/sample.csv'))for (item in records) {print item.get(0) + ' 'println item.get(1)}}
}

buildscript代码块中的repositories和dependencies的使用方式与直接在build.gradle文件中的使用方 式几乎完全一样。

唯一不同之处是在buildscript代码块中你可以对dependencies使用classpath声明。该classpath声 明说明了在执行其余的build脚本时,

class loader可以使用这些你提供的依赖项。这也正是我们使用buildscript代码块的目的。

而如果你的项目中需要使用该类库的话,就需要定义在buildscript代码块之外的dependencies代码块中。

所以有可能会看到在build.gradle中出现以下代码:

build.gradle

repositories {mavenLocal()mavenCentral()
}dependencies {compile 'org.springframework.ws:spring-ws-core:2.2.0.RELEASE','org.apache.commons:commons-csv:1.0'
}buildscript {repositories {mavenLocal()mavenCentral()}dependencies {classpath 'org.apache.commons:commons-csv:1.0'}
}import org.apache.commons.csv.*task printCSV() {doLast {def records = CSVFormat.EXCEL.parse(new FileReader('config/sample.csv'))for (item in records) {print item.get(0) + ' 'println item.get(1)}}
}

相关文章:

Gradle中的buildScript代码块

PS: 在build script中的task apply plugin: spring-boot 需要 classpath("org.springframework.boot:spring-boot-gradle-plugin:1.2.3.RELEASE") apply plugin: com.moowork.gulp 需要classpath com.moowork.gradle:gradle-gulp-plugin:0.10 在编写Gradle脚本的时…...

Spring boot 集成 xxl-job

文章目录 xxl-job 简介引入xxl-job依赖配置xxl-job config添加properties文件配置BEAN模式(方法形式)步骤一:执行器项目中,开发Job方法:步骤二:调度中心,新建调度任务 xxl-job 简介 官网:https:…...

uni-app通过 vuedraggable 创建上下拖动排序组件

我们右键项目 选择 使用命令行窗口打开所在目录 然后 在终端中输入 npm install vuedraggable --save导入 vuedraggable 然后组件编写代码如下 <template><view class"container"><draggable v-model"list" :options"dragOptions&…...

Android高版本读取沙盒目录apk解析安装失败解决方案

bug场景&#xff1a; 应用内升级下载apk完成后安装&#xff0c;vivo&#xff08;Android13&#xff09;手机会报解析包错误&#xff0c;7.0及以上的手机是没问题的。开始以为是v1,v2签名问题导致的&#xff0c;但是我用浏览器下载下来的安装包是能够正确安装的。排除v1,v2签名的…...

ddns-go配合aliyun域名解析通过ipv6实现共享桌面

ddns-go配合aliyun域名解析通过ipv6实现共享桌面 前提&#xff1a; 必须拥有ipv6公网IP&#xff0c;测试IPv6 测试 (testipv6.cn) 如果是光猫拨号一点要选择ipv4和ipv6&#xff0c;同时要看光猫是否支持ipv6转发&#xff0c;如果不支持转发也不行&#xff0c;光猫不支持ipv6…...

C#WPF 应用Grid布局实现用户登录实例

本文介绍C#WPF Grid布局应用实例,通过用户登录实例演示掌握Grid布局用法。 目录 一、Grid面板介绍 二、用户登录实例 一、Grid面板介绍 网格面板是所有面板中最复杂但用途最广泛的面板。网格面板可用于设计复杂的用户界面,我们需要将多个元素以行和列的表格格式放置。 WP…...

RHEL 8.6 Kubespray 1.23.0 install kubernetes v1.27.5

文章目录 1. 预备条件2. download01 节点 安装 dockerdownload01 节点 介质下载下载 bastion01节点配置 yum 源bastion01 节点安装 docker5. 安装 docker insecure registrybastion01 部署 nginx 与 镜像入库13.1 配置 config.sh13.2 配置 setup-docker.sh13.3 配置 start-ngin…...

RGBD Salient Object Detection via Disentangled Cross-Modal Fusion

方法 HHA means “horizontal disparity, height above ground, and angle with gravity”.结构化上下文编码器{E R S _R^S RS​,E D S _D^S DS​}&#xff0c;模态特定内容编码器{E R C _R^C RC​,E D C _D^C DC​} 体会 作者未提供代码...

VMware下linux中ping报错unknown host的解决办法

一、错误截图 二、解决办法 2.1 按照步骤查看本机虚拟IP 依次点击&#xff1a;【编辑】》【虚拟网络编辑器】&#xff0c;选中NET模式所属的行&#xff0c;就能看到子网地址。 比喻&#xff0c;我的子网地址是&#xff1a;192.168.18.0 那么&#xff0c;接下来要配置的linux…...

Macos数据库管理:Navicat Premium 中文

Navicat Premium提供了直观且易用的图形用户界面&#xff0c;使得操作更为便捷。Navicat Premium 中文支持多种数据库系统&#xff0c;如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等&#xff0c;可以让用户在同一平台上管理不同类型的数据库。Navicat Premium拥有强大的数据…...

数据结构 - 7(Map和Set 15000字详解)

一&#xff1a; 二叉搜索树 1.1 二叉搜索树的概念 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所…...

windows 11 安装PHP8.2

环境说明 windows:windows 11 x64apache: Apache/2.4.43php :php-8.2.11 一.php 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意&#xff1a; 1.要下载Thread Safe&#xff0c;否则没有php8apache2_4.dll这个文件&#xff1b;如果使用Apache作为服务器…...

计算机网络学习笔记(三):数据链路层(待更新)

目录 3.1 基本概念 3.1.1 数据链路和帧 3.1.2 三个基本问题 3.2 类型1&#xff1a;使用点对点信道的数据链路层&#xff08;路由器&#xff09; 3.2.1 点对点协议 PPP&#xff1a;特点 3.2.2 点对点协议 PPP&#xff1a;帧格式 3.2.3 点对点协议 PPP&#xff1a;工作状态 …...

hbase操作学习

1.namespace list_namespace 展示数据库 create_namespace 可以带属性名 属性值 create_namespace mydb,{author>hjp,ctime>2023-10-18}describe_namespace ‘库名’ 查看库的详细信息 alter_namespace ‘库名’ 修改表的详细信息 删除就是把method设置为unset dr…...

Nginx详细配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…...

【数据库】SQL 过滤数据

过滤数据 简单过滤where 子句操作符检查单个值范围值检擦空值检查 高级过滤多个过滤条件求值顺序IN 操作符NOT 操作符 在 s q l sql sql 语句中&#xff0c;通过 WHERE 子句指定搜索条件进行过滤。 简单过滤 包含&#xff1a;WHERE&#xff0c;BETWEEN&#xff0c;IS NULL&a…...

缓存相关问题

对于缓存&#xff0c;我们主要关心两个&#xff1a;缓存的命中率&#xff0c;数据的一致性。由此又会有一些缓存引起的问题&#xff0c;缓存击穿、穿透、雪崩。对于这些问题也是我们在使用缓存时不得不考虑的 。这些问题的解决方案也有很多。这里简单列举几个&#xff1a; &am…...

arrow(c++)改写empyrical系列1---用arrow读取基金净值数据并计算夏普率

用arrow c版本读取了csv中的基金净值数据&#xff0c;然后计算了夏普率&#xff0c;比较尴尬的是&#xff0c;arrow c版本计算耗费的时间却比python的empyrical版本耗费时间多。。。 arrow新手上路&#xff0c;第一次自己去实现功能&#xff0c;实现的大概率并不是最高效的方…...

Mathematica强制将函数的自变量由符号转为数值

问题 使用Mathematcia完成函数优化&#xff08;FindMaximum&#xff09;十分方便。但是如果优化的目标函数非常复杂&#xff0c;里面嵌套了若干NSolve函数&#xff0c;那么FindMaximum可能会计算非常长时间&#xff0c;甚至无法得到正确结果。 原因在于&#xff0c;Mathemtic…...

【wps】记录

1、ppt背景图片上的字体怎样消除&#xff1f; 打开PPT要删除文字的PPT后&#xff0c;依次点击视图→母版视图→幻灯片母版。 在幻灯片母版的左侧&#xff0c;选择版式页面&#xff0c;在母版的右侧选择要删除的文字&#xff0c;删除即可 点击“关闭母版视图”即可退出幻灯片…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

基于单片机的宠物屋智能系统设计与实现(论文+源码)

本设计基于单片机的宠物屋智能系统核心是实现对宠物生活环境及状态的智能管理。系统以单片机为中枢&#xff0c;连接红外测温传感器&#xff0c;可实时精准捕捉宠物体温变化&#xff0c;以便及时发现健康异常&#xff1b;水位检测传感器时刻监测饮用水余量&#xff0c;防止宠物…...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中&#xff0c;向量运算构成了理解几何结构的基石。叉乘&#xff08;外积&#xff09;与点积&#xff08;内积&#xff09;作为向量代数的两大支柱&#xff0c;表面上呈现出截然不同的几何意义与代数形式&#xff0c;却在深层次上揭示了向量间相互作用的…...