首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对于具有compileOnly依赖关系的单元测试,如何避免在运行时为可用性重新声明依赖项?

对于具有compileOnly依赖关系的单元测试,如何避免在运行时为可用性重新声明依赖项?
EN

Stack Overflow用户
提问于 2020-05-13 11:45:52
回答 2查看 1.4K关注 0票数 4

我目前正在使用Gradle构建一个项目,它依赖于第三方组件,这是我在编译时需要的,但它将在运行时提供。在maven中,我将按照提供的方式声明此依赖关系,在Gradle中,我将声明如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  compileOnly group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.0.cloudera1'

事实上,我依赖于上面的火花工件并不是真正相关的问题(我提供这个信息,以使这个例子更具体)。

现在,假设我想为我的应用程序(或库,视情况而定)编写一些单元测试。在使用Gradle时,我知道如何做到这一点的唯一方法是笨拙:我将依赖项重新声明为testCompile依赖项,并且我的测试能够运行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  compileOnly group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.0.cloudera1'
  testCompile group: 'org.apache.spark', name: 'spark-sql_2.11', version: '2.4.0.cloudera1'

我真的不喜欢重复和混乱的声明我的依赖性两次,我想知道是否有更好的方法在格拉德尔?

结论

Mike给我的答案是我选择的解决方案,就是把这个放在我的多项目构建的顶级gradle文件中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
subprojects {

  sourceSets {
    test.compileClasspath += configurations.compileOnly
    test.runtimeClasspath += configurations.compileOnly
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-13 12:22:03

这实际上是声明Gradle依赖关系的一种非常标准的方法。在许多情况下,可以使用compileOnly依赖项,而且并不是所有这些都要求在运行时提供依赖项(与Maven的provided作用域含义不同)。

这一点在Gradle最初关于只编译依赖项(https://blog.gradle.org/introducing-compile-only-dependencies)的声明中有进一步的详细说明:

只编译依赖项解决了许多用例,包括:

编译时需要但在运行时从来不需要processors;

  • Dependencies的
  • 依赖项,例如编译时需要的纯源注释或注释
  • ,但只有在使用某些特性(即k.a)时才在运行时才需要。可选的dependencies;
  • Dependencies,其API在编译时是必需的,但其实现将由消费库、应用程序或运行时environment.

提供。

您所拥有的是为您的主要源代码声明仅编译依赖的惯用方法,这也是测试源的运行时依赖(尽管从技术上讲,最近的Gradle版本会建议您用testImplementation配置替换已废弃的testImplementation配置)。

然而,关于Gradle的一个美妙之处是它是高度可定制的。可以修改内置配置(如compileOnlytestImplementation )。如果希望更改内置行为,可以修改testImplementation配置以扩展compileOnly配置,这将导致在解决testImplementation时包含所有compileOnly依赖项:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// give test dependencies access to compileOnly dependencies to emulate providedCompile
configurations {
    testImplementation.extendsFrom compileOnly
}

来源:https://discuss.gradle.org/t/compileonly-dependencies-are-not-available-in-tests/15366/8

票数 6
EN

Stack Overflow用户

发布于 2022-01-10 23:38:55

在Kotlin Gradle中,从testImplementation扩展到compileOnly

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
configurations {
    configurations.testImplementation.get().apply {
        extendsFrom(configurations.compileOnly.get())
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61783546

复制
相关文章
SQL逻辑查询语句执行顺序
一 SELECT语句关键字的定义顺序 SELECT DISTINCT <select_list> FROM <left_table> <join_type> JOIN <right_table> ON <join_condition> WHERE <where_condition> GROUP BY <group_by_list> HAVING <having_condition> ORDER BY <order_by_condition> LIMIT <limit_number> 二 SELECT语句关键
用户1214487
2018/01/24
4.1K0
SQL里是否可以使用JOIN
很多公司都禁止程序员在 SQL 中使用 JOIN,至于原因则出奇的一致:用 JOIN 慢。不过我从没见过谁来论证为什么用 JOIN 慢,结果这个人云亦云的结论越传越广,让我觉得是时候来讨论一下这个看似正确的结论了。
LA0WAN9
2021/12/14
5640
SQL里是否可以使用JOIN
sql查询序列是否存在_oracle if判断是否为空
select sequence_name from user_sequences where sequence_name= ‘参数’
全栈程序员站长
2022/11/07
2.8K0
【逻辑】什么是前端开发中的业务逻辑?
业务逻辑?呵呵,许多前端新人很困惑这个话题。当他们在面试当中被问到“这个业务逻辑你是如何处理的”的时候,他们经常会不知如何回答。
web前端教室
2018/07/30
3.1K0
业务逻辑?
这有点像一个头脑风暴,能够帮助你将所需用到的原材料获取到,有了这些“米”和“水”,那就不愁去如何烹饪了。 在项目管理中,上个月,我们也试图给去规范化一个数据产品的设计开发流程。
红目香薰
2022/11/29
3480
业务逻辑?
go 中 struct 是否可以比较?
今天来水一篇,最近比较忙,一直没有时间写 go 相关的,今天从一个小问题入手,来说说 struct 的比较问题。
LinkinStar
2022/09/01
8400
SQL中查询效率优化
索引是独立于表的一中物理存储结构,当我们语句中用到索引的字段的时候,数据库会首先去索引中查找满足条件的数据的索引值(相当于页码),然后在根据索引值去表中筛选出我们的结果。 当我们使用索引和不使用索引的时候,效率会相差相当大,特别是当数据量越来越大的时候。 另外需要注意的是并不是我们在where条件里面用有索引的字段进行筛选数据库在查询的时候就会走索引,有些写法会让数据库不走索引,接下来会总结一些会让查询进行全表扫描而不走索引的写法;
Awesome_Tang
2018/09/11
2.6K0
SQL中查询效率优化
sql中的嵌套查询_sql的多表数据嵌套查询
测试的时候发现取出的是一条数据, 因为测试的时候是一天中的两条数据, 没有不同的日期,所以当日以为是正确的 ,然而第二天写入数据了,要取出数据,却发现没有数据, 返回空的行, 以为都是代码又有问题 了,找了半天都没有 ,仔细看看了存储过程中的代码,发现这样返回的数据的确是空的。
全栈程序员站长
2022/09/22
7.1K0
mybatis的mapper文件中的一个标签是否可以写多条SQL语句?是否存在事物?
这样默认是不能实现mybatis的mapper文件中的一个标签可以写多条SQL语句的,会报异常:
趣学程序-shaofeer
2020/05/10
2.8K0
业务逻辑漏洞
随着各类前后端框架的成熟和完善,传统的SQL注入、XSS等常规漏洞在Web系统里逐步减少,而攻击者更倾向于使用业务逻辑漏洞来进行突破。
全栈程序员站长
2022/06/28
1.4K0
杨建允:直播电商的运营逻辑,是否可以复制?
直播电商看起来门槛不高,但想要做到某个垂直品类的头部,门槛就相当的高,但在消费驱动的市场格局下,仍有无数条赛道和垂直细分领域可以发掘。想要复制成熟的IP很难,但是借鉴成熟的经验不难。不同的平台,流量推荐逻辑和对私域流量的依赖程度是不同的,所以用好平台的前提是充分研究好平台。
西安王晓楠
2022/12/09
7820
杨建允:直播电商的运营逻辑,是否可以复制?
你真的会玩SQL吗?之逻辑查询处理阶段
你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接、外连接 你真的会玩SQL吗?三范式、数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节点的方法 你真的会玩SQL吗?让人晕头转向的三值逻辑 你真的会玩SQL吗?EXISTS和IN之间的区别 你真的会玩SQL吗?无处不在的子查询 你真的会玩SQL吗?Case也疯狂 你真的会玩SQL吗?表表达式,排名函数 你真的会玩SQL吗?简单的 数据修改 你真的会玩SQL吗?你所不知道的 数据聚合 你真的会玩S
欢醉
2018/01/22
1.4K0
你真的会玩SQL吗?之逻辑查询处理阶段
xml 中 sql 模糊查询 like
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131044.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/11
1.6K0
kettle中实现动态SQL查询
在ETL项目中,通常有根据运行时输入参数去执行一些SQL语句,如查询数据。本文通过kettle中的表输入(“table input”)步骤来说明动态查询、参数查询。示例代码使用内存数据库(H2),下载就可以直接运行,通过示例学习更轻松。
全栈程序员站长
2022/09/09
5.6K0
kettle中实现动态SQL查询
JAVA中SQL查询语句大全,select多表查询,各种查询
– 查询emp表中的所有部门, 剔除重复的记录, 提示: distinct用于剔除重复值
全栈程序员站长
2022/09/02
2.2K0
JAVA中SQL查询语句大全,select多表查询,各种查询
CA2100:检查 SQL 查询是否存在安全漏洞
一种方法使用按该方法的字符串参数生成的字符串设置 System.Data.IDbCommand.CommandText 属性。
用户4268038
2022/02/20
1.8K0
业务逻辑漏洞总结
在平时学习安全中常常会有涉及到sql注入,xss,文件上传,命令执行等等常规的漏洞,但是在如今的环境下,结合当前功能点的作用,虽然不在owasp top10 中提及到,但是往往会存在的,一般叫做逻辑漏洞。
天钧
2020/12/03
1.8K0
业务逻辑漏洞总结[通俗易懂]
逻辑漏洞就是指攻击者利用业务/功能上的设计缺陷,获取敏感信息或破坏业务的完整性。一般出现在密码修改、越权访问、密码找回、交易支付金额等功能处。
全栈程序员站长
2022/09/01
3.1K0
业务安全(逻辑漏洞)
近年来,随着信息化技术的迅速发展和全球一体化进程的不断加快,计算机和网络已经成为与所有 人都息息相关的工具和媒介,个人的工作、生活和娱乐,企业的管理,力全国家的反捉V资产处其外。信息和互联网带来的不仅仅是便利和高效,大量隐私、敏感和高价值的信息数据和资产, 成为恶意攻击者攻击和威胁的主要目标,从早期以极客为核心的黑客黄金时代,到现在利益链驱动的庞大黑色产业,网络安全已经成为任何个人、企业、组织和国家所必须面临的重要问题。“网络安全和信息化是事关国家安全和国家发展、事关广大人民群众工作生活的重大战略问题,没有网络安全就没有国家安全,没有信息化就没有现代化。”
全栈程序员站长
2022/09/06
1.1K0
业务逻辑中如何处理断线重连
之前一直对如何在业务逻辑中处理断线重连没有一个清晰的认识,后来做了一些思考,这里简单记录一下~
用户2615200
2019/06/22
8920

相似问题

是否可以将此SQL查询转换为linq?

217

使用业务逻辑的复杂SQL查询

14

将此逻辑放入存储库或服务中

20

基于复杂业务逻辑的SQL查询

30

如何编写以下业务逻辑的sql查询?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文