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场景: 应用内升级下载apk完成后安装,vivo(Android13)手机会报解析包错误,7.0及以上的手机是没问题的。开始以为是v1,v2签名问题导致的,但是我用浏览器下载下来的安装包是能够正确安装的。排除v1,v2签名的…...
ddns-go配合aliyun域名解析通过ipv6实现共享桌面
ddns-go配合aliyun域名解析通过ipv6实现共享桌面 前提: 必须拥有ipv6公网IP,测试IPv6 测试 (testipv6.cn) 如果是光猫拨号一点要选择ipv4和ipv6,同时要看光猫是否支持ipv6转发,如果不支持转发也不行,光猫不支持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},模态特定内容编码器{E R C _R^C RC,E D C _D^C DC} 体会 作者未提供代码...
VMware下linux中ping报错unknown host的解决办法
一、错误截图 二、解决办法 2.1 按照步骤查看本机虚拟IP 依次点击:【编辑】》【虚拟网络编辑器】,选中NET模式所属的行,就能看到子网地址。 比喻,我的子网地址是:192.168.18.0 那么,接下来要配置的linux…...
Macos数据库管理:Navicat Premium 中文
Navicat Premium提供了直观且易用的图形用户界面,使得操作更为便捷。Navicat Premium 中文支持多种数据库系统,如MySQL、MariaDB、Oracle、SQLite、PostgreSQL等,可以让用户在同一平台上管理不同类型的数据库。Navicat Premium拥有强大的数据…...
数据结构 - 7(Map和Set 15000字详解)
一: 二叉搜索树 1.1 二叉搜索树的概念 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所…...
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 注意: 1.要下载Thread Safe,否则没有php8apache2_4.dll这个文件;如果使用Apache作为服务器…...
计算机网络学习笔记(三):数据链路层(待更新)
目录 3.1 基本概念 3.1.1 数据链路和帧 3.1.2 三个基本问题 3.2 类型1:使用点对点信道的数据链路层(路由器) 3.2.1 点对点协议 PPP:特点 3.2.2 点对点协议 PPP:帧格式 3.2.3 点对点协议 PPP:工作状态 …...
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文件,该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织: 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…...
【数据库】SQL 过滤数据
过滤数据 简单过滤where 子句操作符检查单个值范围值检擦空值检查 高级过滤多个过滤条件求值顺序IN 操作符NOT 操作符 在 s q l sql sql 语句中,通过 WHERE 子句指定搜索条件进行过滤。 简单过滤 包含:WHERE,BETWEEN,IS NULL&a…...
缓存相关问题
对于缓存,我们主要关心两个:缓存的命中率,数据的一致性。由此又会有一些缓存引起的问题,缓存击穿、穿透、雪崩。对于这些问题也是我们在使用缓存时不得不考虑的 。这些问题的解决方案也有很多。这里简单列举几个: &am…...
arrow(c++)改写empyrical系列1---用arrow读取基金净值数据并计算夏普率
用arrow c版本读取了csv中的基金净值数据,然后计算了夏普率,比较尴尬的是,arrow c版本计算耗费的时间却比python的empyrical版本耗费时间多。。。 arrow新手上路,第一次自己去实现功能,实现的大概率并不是最高效的方…...
Mathematica强制将函数的自变量由符号转为数值
问题 使用Mathematcia完成函数优化(FindMaximum)十分方便。但是如果优化的目标函数非常复杂,里面嵌套了若干NSolve函数,那么FindMaximum可能会计算非常长时间,甚至无法得到正确结果。 原因在于,Mathemtic…...
【wps】记录
1、ppt背景图片上的字体怎样消除? 打开PPT要删除文字的PPT后,依次点击视图→母版视图→幻灯片母版。 在幻灯片母版的左侧,选择版式页面,在母版的右侧选择要删除的文字,删除即可 点击“关闭母版视图”即可退出幻灯片…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
