首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Gradle:为什么sourceSets.main.output是可用的,而其他的不可用?

Gradle是一种基于Groovy语言的构建工具,用于自动化构建、测试和部署软件项目。它通过定义项目的构建脚本来管理项目的编译、依赖管理和打包等任务。

在Gradle中,sourceSets是一个用于定义项目源代码目录结构的对象。它包含了多个属性,如main、test等,用于指定不同的源代码目录。其中,sourceSets.main.output属性表示项目主要源代码的输出目录。

为什么sourceSets.main.output是可用的,而其他的不可用?这是因为在Gradle中,sourceSets.main是默认的源代码集合,它包含了项目的主要源代码。而其他的sourceSets,如sourceSets.test等,是可选的源代码集合,用于存放测试相关的源代码。

由于主要源代码是项目的核心部分,因此Gradle默认将其输出目录设置为可用。而其他的源代码集合可能是可选的,可能只在特定的构建任务中使用,因此它们的输出目录默认是不可用的。

在实际开发中,我们可以通过自定义sourceSets来定义自己的源代码集合,并为其指定输出目录。这样,我们就可以在构建过程中使用这些源代码集合,并获取其输出目录的路径。

总结起来,sourceSets.main.output是可用的,而其他的sourceSets不可用是因为主要源代码是项目的核心部分,默认输出目录是可用的;而其他的源代码集合是可选的,输出目录默认是不可用的。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么vuexMutations同步,Actions异步

vuex[1]mutations与actions有什么区别,除了用法上mutation同步,actions异步,这里同步与异步指的是commitordispatch?...并不是,同步指mutations方内部同步actions内部可以是异步,并且修改数据只能在mutations中修改,在actions中异步操作副作用结果通过mutations来记录。...本文一篇笔者记录vuex关于mutations与actions笔记。 正文开始......总结 灵魂拷问,为什么会有actions中异步,mutations同步,从官方解释来看,修改state数据必须只能mutations中修改,假设mutions内部有异步,那么会带来devtool...只集中干一件事,直接修改state值 actions异步操作,actions中可以有多个异步操作,但是最终结果依然交给mutations去修改,也就是说actions中异步操作副作用统一交给了

2.1K21

为什么 useState 返回 array 不是 object?

前言 这是我今天收到一条推送文章,发现自己好像也没有去思考过这个问题,于是点进来了 明白了原因之后,想用自己的话梳理一遍,分享给其他还不了解同学 正文 先来看看 useState 日常用法 const...[count, setCount] = useState(0) 这里可以看到 useState 返回一个数组,那么为什么返回数组不是返回对象呢?...为什么返回数组不是返回对象 要弄懂这个问题要先明白 ES6 解构赋值,来看 2 个简单例子: 数组解构赋值 const foo = [1, 2, 3]; const [one, two, three...总结 useState 返回 array 不是 object 原因就是为了降低使用复杂度,返回数组的话可以直接根据顺序解构,返回对象的话要想使用多次就得定义别名了 首发自:为什么 useState...返回 array 不是 object?

2.1K20

Python如何怼翻其他编程语言窜上宝座

这得好好分析一下了,Python到底用了什么招数怼翻其他编程语言? 首先,Python有5大优点。 简单:Python奉行简洁主义,易于读写,它使你能够专注于解决问题不是去搞明白语言本身。...那到底Python好还是Java好? from Cleveroad Java必须显式声明变量名,动态类型Python不需要声明变量。...Python一种语法简单功能强大语言,能够通过编写脚本就提供优秀解决方案,并能够快捷地部署在各个领域。 Java可以创建跨平台应用程序,Python几乎与当前所有操作系统兼容。...Python vs PHP from Cleveroad 从开发角度来看,PHP面向web语言,Python多用途语言,也可以用于web开发。...Ruby提供了不同方法,Python通常只有一个,这既是优势也劣势。

99380

为什么Gradle Android 进阶绕不去

1.3 Gradle重要概念 Gradle: 提供核心构建流程,但不提供具体构建逻辑; Gradle 插件: Gradle 提供一套核心构建机制, Gradle 插件正是运行在这套机制上一些具体构建逻辑...为什么 Gradle 官方从早期就专门推出一个自动安装环境工具呢,我认为原因有 2 个: 确保 Gradle 版本正确性: 鉴于 Gradle 有较弱向后兼容性特点,Gradle Wrapper 能够从项目工程级别固化项目所需要...& gradlew.bat: 在 Linux 或 Mac 上可用 Shell 脚本,以及在 Window 上可用 Batch 脚本,用于以 Gradle Wrapper 方式执行构建。...例如编译任务,输入源文件,输出 Class 文件。...对于 Task 输入输出,我们用面向对象概念去理解没问题。如果我们把 Task 理解为一个函数,则 Task 输入就是函数参数, Task 输出就是函数返回值。

2.5K10

·为什么CNN同步(并行)RNN异步(串行)呢?

为什么CNN同步(并行)RNN异步(串行)呢?...个人主页--> https://xiaosongshine.github.io/ 1.问题引出 CNN与RNN都是采用parameter sharing(参数共享)单元,滑动遍历结构,为什么CNN...同步(并行)RNN异步(串行)呢?...2.个人愚见: CNN,RNN共享单元和滑动结构类似,区别在于RNN具有记忆功能,被遍历单元具有因果联系作用(记忆信息传送),上一时刻隐层状态参与到了这个时刻计算过程中,这句话举例说明就是第一个单元计算结果会作为第二个单元输入一部分...CNN同一层次单元没有因果关系都是等价,这样就可以依据单元核直接复制出所需所有单元核(参数相同),然后采用矩阵并行运算,只需计算一次。。

1.1K30

为什么MySQL默认隔离级别是RR大厂使用RC?

1写作目的 现在服务都是分布式,MySQL集群架构也是一样。那么MySQL集群架构中有一个点读写分离,读写分离基于binlog实现。...,为什么Mysql不选择读已提交(Read Commited)作为默认隔离级别,选择可重复读(Repeatable Read)作为默认隔离级别呢?...4为什么大厂MySQL设置隔离级别是RC RC和RR一个很大区别是RR解决了不可重复读问题。但是仔细想一想,不可重复读问题吗?其实不是问题。...我第一次读到1,再次读时候为2,中间有人把1修改为2,那我读取到2就没问题。RC反应真实数据变迁。主要数据真实有效(没提交就是脏读,无效),为什么怕被别人读出来呢?...在RC隔离级别下其他事务可以读取到。如果在等待slaveack过程中binlog还没传输到slave上,则其他事务查询该数据为修改后数据,此时master宕机。slave上升为master。

32210

redissortset为什么使用跳表,不使用红黑树?

redis有序号集合通过跳表来实现,严格地讲还有散列表 我们都知道redis有序集合操作都包括 : 插入一个数据 删除一个数据, -查找一个数据, 按照区间查找数据(例如[100,256])之间数据...其中插入删除,删除,查找以及迭代输出时间复杂度红黑树和跳表时间复杂度一样。...跳表在区间查询时候效率高于红黑树,跳表进行查找O(logn)时间复杂度定位到区间起点,然后在原始链表往后遍历就可以了 ,其他插入和单个条件查询,更新两者复杂度都是相同O(logn) 跳表代码实现相对于红黑树更容易实现...(红黑树平衡通过左旋转和有旋转来进行平衡)

66310

JDK 1.8 HashMap 详解: 为什么并发会出问题?甚至出现死循环导致系统不可用

为什么说HashMap是非线程安全呢?因为在高并发情况下,HashMap在一些操作上会存在问题,如死循环问题,导致CPU使用率较高。 下面来看下怎么复现这个问题。...线程安全,CAS+同步锁、数组+链表+红黑树 HashMapkey,value均可为null,其他两个不行。...每个segment加锁,对修改segment操作加锁,不影响其他segment使用,所以理想情况下,最多支持16个线程并发修改segment,这16个线程分别访问不同segment。...在JDK1.8主要设计上改进有以下几点: 1、不采用segment采用node,锁住node来实现减小锁粒度。...处于可运行状态某一线程正在 Java 虚拟机中运行,但它可能正在等待操作系统中其他资源,比如处理器。 3.BLOCKED 受阻塞并且正在等待监视器锁某一线程线程状态。

3.6K30

为什么 Docker 和 Kubernetes 用 Go 写不是 C# ?

HahahahahaSoFunny 为什么 Docker 和 Kubernetes 工具用 Go 写不是 C#? 总所周知,现在开发人员使用很多新工具大多是用 Go 写。...为什么不是 C# 呢? .NET 和 C# 现在功能已经很强大了,是不是社区缺少这种文化?如何才能培养一种更加开源文化, 因为很多开发人员对 .NET 和 C# 仍然还抱有偏见。...haho5: 不确定为什么 Docker 用 Go 写, 但是 Kubernetes 确实是 Google 开发, 并且 Golang 也是。...像 C/C++ 这样稍微低级语言可以让您更接近硬件,对性能有要求时,这是最合适。 我可以用螺丝刀敲打钉子很多次,也可以用锤子花很大力气把螺丝打进去,都可以完成工作。...它从 2.0 到现在 10.0 变化非常快,相同代码逻辑可以用太多不同方式编写。 GO 一门简单语言,很受欢迎,因为好代码应该易于阅读和理解,以便成千上万开源程序员做出贡献。

1.1K00

为什么计算机最小存储单位字节?最小到传输单位bit?

事实上电脑中还有比字节更小单位,因为一个字节由八个二进制位组成,换一句话说,每个二进制位所占空间才是电脑中最小单位,我们把它称为位,也称比特(bit)。由此可见,一个字节等于八个位。...另外,内存中运算最小存储单位字节,位运算也是在一个字节存储单位基础上进行,所以存储最小单位可以理解为字节。...2.bit二进制数一位包含信息或2个选项中特别指定1个需要信息量称为一比特,表示信息最小单位,只有两种状态:0和1。...电脑内部电路工作有高电平和低电平两种状态.所以就用二进制来表示信号,以便计算机识别。所以计算机能传输最小单位当然你信号单位bit,不是字节,串口最小也有一位传递。...另外数字信息流基本单位bit(比特),时间基本单位s(秒),因此bit/s(比特/秒)描述带宽单位,1bit/s带宽基本单位,所谓带宽其实指的是传输速度快慢,也就是指在一个固定时间内

9K53

Java里面Join(),为什么等待主线程,不是当前子线程?

但是仔细一想,发现这个明明调用子线程join()方法,按道理应该子线程等待执行才是,为什么反而是主线程等待了呢?...源码中注释说明等待这个线程终止,那就是等待调用Join()线程终止,再继续往下看: /** * Waits at most {@code millis} milliseconds for...注意按照程序执行顺序,我们这里主线程调用ThreadJoin方法,所以是判断子线程存活状态,满足则让子线程执行,主线程来等待。...wait 等待方法让线程进入等待队列,使用方法 obj.wait(); 这样当前线程就会暂停运行,并且进入obj等待队列中,称作“线程正在obj上等待”。...可以把子线程t理解为一个普通obj对象,调用twait()方法,实际上就是主线程(main线程)在childThread对象队列上等待,可以转换为如下写法进一步理解: /** * 主线程 */

78250

WPF 命令自动刷新时机——当你 CanExecute 会返回 true 但命令依旧不可用时可能这些原因

在 WPF 中,你可以使用 Command="{Binding WalterlvCommand}" 方式来让 XAML 中一个按钮或其他控件绑定一个命令。...这样,按钮可用性会自动根据 WalterlvCommand 当前 CanExecute 状态来改变。...这本是一个非常智能特性,直到你可能发现你按钮可用性状态不正确…… 本文介绍默认情况下,WPF 在 UI 上这些命令会在什么时机进行刷新;以及没有及时刷新时,可以如何强制让这些命令可用性状态进行刷新...} } 假如 SomeFlag 一开始 false,5 秒种后变为 true,那么你会注意到这时按钮状态并不会刷新。...walterlv; await Task.Delay(5000); walterlv.WalterlvCommand.SomeFlag = true; 当然,以上所有代码会更像伪代码,如果你不熟悉 WPF,一定编译不过

68230

为什么企业数据库转向 CLOUD DATABASE 不是国产数据库

根据国际金融协会对中国经济中债务问题进行预测和评估,中国债务问题从2008年以来,一直是以20%速度进行增长,尤其地方债务问题。...这些对于数据库有什么影响,其实就是成本问题,一个企业本身一个盈利机构,盈利机构中就必须要针对投入产出比进行衡量,IT 成本尤其机房建设本身对于企业消耗蛮大,并且这些还是一个持续性投入,...随着经济问题凸显,各个企业项目会缩减,维稳一个主基调,对于一些项目的建设大多是基于灵活性运作方式,也就是项目走一步算一步,并且灵活性很高,针对这些新项目的建设就需要评估,而在搞不清这些项目的持续回报情况下...基于数据库产品,国内大部分云厂商都提供了产品,并且随着使用企业越来越多,对于产品持续迭代和快速更新也是吸引企业持续使用云上产品保证书,终究企业都是希望使用产品被验证过不是去当小白鼠。...未来对于DBA 需求,更多企业可能会抛弃之前 “重型” DBA, 也就是传统DBA ,类似对于硬件以及数据库高可用操作维护型DBA ,转而需要对开发更了解,理解业务,与数据库原理,能帮助项目快速搭建将上述只是融合并解决问题

73940

是否还在疑惑Vue.js中组件data为什么函数类型不是对象类型

一般我们会以组件化思想去开发(别担心,马上讲解什么组件化思想),所以我们还会用到Vue实例对象中另一个属性components去注册别的组件。...我们先来了解一下什么组件化思想,我们一般会在一个页面创建Vue实例,并以该页面作为主文件,然后将其他页面作为该文件子文件(组件),如图 ?...正是因为没有进行挂载,所以这个Vue实例可以被反复使用,也就是说可以在很多个页面都注册一次。...Vue() //此时vm2这样 vm2 = { //这里data,先获取了函数Vue中data(data值为函数),然后得到了data返回值 data: { name: '李四...这是因为这两个实例对象在创建时,先获得了一个函数,将该函数返回值作为了自己属性data值,并且这两个实例对象中data值在栈中对应堆中地址也不一样,所以他们不会互相影响。

3.4K30

对人脑如何控制手新认识:我们为什么削水果时,拿刀柄不会拿刀刃?

人类大脑如何控制我们手正确地抓住物体,还没有被很好地理解。在最近一项研究中,研究人员想弄清楚是否可以利用来自大脑特定部位信号来区分人们是否正确地使用工具--例如,握住刀柄不是刀刃。...为了允许在MRI扫描仪有限范围内研究真实手部动作,研究人员使用了一种真实动作设置来呈现3D工具和其他物体。...这一点很重要,因为知道正确抓住物体部位成功使用工具关键--比如拿一把刀,应该抓住它刀柄,不是刀刃。...与大多数科学家预期相反,我们通过大脑区域对手图片作出反应信号,不是通过视觉区域对工具图片作出反应来预测是否正确抓握了工具。...重要,来自处理手图像大脑区域信号只能用于预测手持工具动作,不能预测与控制3D条形物体相匹配动作。这表明手视觉区域专门协调与工具行动。

33910

框架篇-Vue面试题1-为什么 vue 组件中 data 函数不是对象

在vue组件中data属性值函数,如下所示 export default { data() { // data一个函数,data: function() {}简写 return...// data一个对象 name: 'itclanCoder', }, }; 当一个组件被定义,data必须声明为返回一个初始数据对象函数,因为组件可能被用来创建多个实例 也就是说,在很多页面中...,定义组件可以复用在多个页面 如果data一个纯碎对象,则所有的实例将共享引用同一份data数据对象,无论在哪个组件实例中修改data,都会影响到所有的组件实例 如果data函数,每次创建一个新实例后...,实例化出来对象(p1,p2)都指向同一份实体 原型下属性相当于是公有的 修改一个实例对象下属性,也会造成另一个实例属性跟着改变,这样在组件复用时候,肯定是不行,那么改成函数就可以了,如下代码所示...'itclanCoder', }; }; var p1 = new Person(); var p2 = new Person(); p1.data.name = '随笔川迹'; // 如果函数形式去定义属性

1.9K20

后端开发实践系列——Spring Boot项目模板

此外,除了Java代码,项目中还存在其他类型文件,比如Gradle插件配置、工具脚本和部署配置等。无论如何,项目目录结构原则是简单而有条理,不要随意地增加多余文件夹,并且也需要及时重构。...在示例项目中,顶层只有2个文件夹,一个用于放置Java源代码和项目配置src文件夹,另一个用于放置所有Gradle配置gradle文件夹,此外,为了方便开发人员使用,将上文提到3个常用脚本直接放到根目录下...为此,可以通过Gradle提供SourceSets对测试代码进行分类: sourceSets { componentTest { compileClasspath += sourceSets.main.output...分布式锁,事实上任何提供原子操作机制都可用于分布式锁,Shedlock还提供基于Redis、ZooKeeper和Hazelcast等分布式锁实现机制。...最后,需要提醒,本文提到实践方式只是一个参考,一方面依然存在考虑不周地方,另一方面示例项目中用到技术工具还存在其他替代方案,请根据自己项目的实际情况进行取舍。

41110

springBoot生成SQL文件-基于Liquibase实现

之前文章介绍都是用jpa或者Hibernate内部方法实现,本文引入一个第三方数据库管理工具Liquibase,说到数据库版本管理软件还有Flyway,但其社区版无论功能还是用法均简单至极,完全无法和...本文目标创建一个gradletask来运行Liquibase生成增量脚本,这里需要引入其gradle插件liquibase-gradle-plugin。..." } } apply plugin: 'org.liquibase.gradle' 2.设置classpath 该插件在运行任务时需要能够在类路径上找到Liquibase,Liquibase...本方案通过对比两个数据库生成增量脚本。 1.设置build.gradle buildscript中dependencies包含插件: buildscript { ......原因单模块下可以直接通过配置liquibaseRuntime sourceSets.main.output依赖,将entityclasspath注入给liquibase,若多模块下有大神能找到方案,

2.8K40

JAVA编译工具gradle

执行冒烟测试和自动功能测试 1.2 编译演进史 完成这一系列步骤项目构建工具,先后有了ANT, Maven,Gradle ANT类似于Make自动化编译工具,编译规则用XML描述。...Gradle最大改进,抛弃XML,拥抱DSL描述性语言,语法更简洁,同样意思用极少量语言表达出来。...不同之处在buildscript代码块中你可以对dependencies使用classpath声明。compilebuild使用依赖,testCompile编译测试用例所需要依赖。...task spark(type: Jar) { from sourceSets.main.output baseName = 'spark' } 2.12 打包后操作 compileJava.doLast...{ tasks.instrument.execute() } 三、gradle使用 3.1 安装gradle 当前最新这个wget https://downloads.gradle-dn.com

2.4K511
领券