Gradle技巧–显示buildscript依赖项

在Gradle中如何显示和分析buildscript依赖项(例如插件)的简单方法

介绍

这是我的Gradle技巧迷你系列的第三部分,该系列与可视化和依赖性分析有关。 在第一篇文章中,我介绍了一种如何显示多项目构建中所有子项目的依赖关系的方法。 在第二篇文章中,我展示了一种可用于跟踪项目中未预期的传递依赖项的技术。 这次较少使用的东西,但是在特定情况下至关重要–构建脚本依赖项。

实际用例

Buildscript依赖项包含我们项目中使用的插件及其依赖项。 除非您是Gradle插件开发人员,否则这似乎没什么意思,但这并不是完全正确的。 曾经,作为一名顾问,我正在一个大型项目中研究与NoSuchMethodException有关的问题,该项目具有在Gradle之上构建的自定义构建框架。 仅当一个无辜的,非常流行的开源插件已添加到该项目中时,才发生该问题。 同一插件在该公司的许多其他项目中都可以正常工作。 最后,我能够找出buildSrc自定义脚本中使用的依赖项之一,从插件覆盖旧版本中的相同依赖项。 结果,插件在运行时失败,并提到了NoSuchMethodException 。 为了实现这一点,我不得不使用自定义脚本,因为在使用./gradlew dependencies./gradlew dependencyInsight时,完全忽略了buildscript / classpath依赖项。

写这篇文章的想法是在2015年初提出的。我想展示我的Gradle小型任务,该任务使用一些内部Gradle机制检索buildscript依赖项并将其显示在控制台上。 该帖子被推迟了,将近一年后,我对Gradle 2.10的发行说明感到惊讶。 添加了新的buildEnvironment任务。

$ ./gradlew buildEnvironment
:buildEnvironment------------------------------------------------------------
Root project
------------------------------------------------------------classpath
+--- com.bmuschko:gradle-nexus-plugin:2.3
\--- io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.3\--- org.codehaus.groovy.modules.http-builder:http-builder:0.7.1+--- org.apache.httpcomponents:httpclient:4.2.1|    +--- org.apache.httpcomponents:httpcore:4.2.1|    +--- commons-logging:commons-logging:1.1.1|    \--- commons-codec:commons-codec:1.6+--- net.sf.json-lib:json-lib:2.3|    +--- commons-beanutils:commons-beanutils:1.8.0|    |    \--- commons-logging:commons-logging:1.1.1|    +--- commons-collections:commons-collections:3.2.1|    +--- commons-lang:commons-lang:2.4|    +--- commons-logging:commons-logging:1.1.1|    \--- net.sf.ezmorph:ezmorph:1.0.6|         \--- commons-lang:commons-lang:2.3 -> 2.4+--- net.sourceforge.nekohtml:nekohtml:1.9.16\--- xml-resolver:xml-resolver:1.2(*) - dependencies omitted (listed previously)BUILD SUCCESSFULTotal time: 1.38 secs

两个插件和传递的依赖关系到包gradle这个-关系分期-插件由于HTTP建设者(也许这将是很好的,取而代之的是Jodd ?)。

摘要

能够区分标准项目依赖关系和buildscript依赖关系是值得的。 新的buildEnvironment任务有助于处理后者。 当奇怪的运行时错误开始出现时,这又变得至关重要。

经过Gradle 2.10测试。

翻译自: https://www.javacodegeeks.com/2016/06/gradle-tricks-display-buildscript-dependencies.html

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

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

相关文章

Java购物车swing_JAVA课程设计--购物车

1.码云GIT提交2.设计思路1,使用数据库对购物车的数据进行处理2.分别使用sql语句来实现对购物车和商城物品的增删改查。3.代码package Main;import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import j…

[python] 列表解析式的高效与简洁

方法一(列表解析式): list1 ["abc","efg","hij"] list2 [i[0] for i in list1] print list2方法二(普通写法): list1 ["abc","efg","hij"…

c++异常处理机制示例及讲解

这两天我写了一个测试c异常处理机制的例子,感觉有很好的示范作用,在此贴出来,给c异常处理的初学者入门。本文后附有c异常的知识普及,有兴趣者也可以看看。 下面的代码直接贴到你的console工程中&am…

mysql数据库char类型长度_mysql数据库设计字符类型及长度

1.数字类型小数的我就不聊了,因为有小数点的一般都是用字符串保存。关于整数,有几种可以选TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT,分别占1、2、4、8字节。如果无符号,则其最大为255、65535、16777215、4294967295和184467440…

隐藏响应的server,X-Powered-By

隐藏X-Powered-By 修改 php.ini 文件 设置 expose_php Off apache 隐藏 server 修改httpd.conf 设置 ServerSignature Off ServerTokens Prod nginx 隐藏 server 修改nginx.conf 在http里面设置 server_tokens off;转载于:https://www.cnblogs.com/ouruola863/p/9519500.ht…

javaone_JavaOne 2012:掌握Java部署

javaone在为另一场JavaOne 2012午餐吃了意大利经典组合后,我前往希尔顿帝国宴会厅B观看了演示“掌握Java部署”。 来自Oracle的发言人是Mark Howe和Igor Nekrestyano Howe表示,部署团队的目标是帮助Java开发人员将其应用程序部署到所选平台。 他首先讨论…

C++异常处理机制详解

异常处理是一种允许两个独立开发的程序组件在程序执行期间遇到程序不正常的情况(异常exception)时相互通信的机制。本文总结了19个C异常处理中的常见问题,基本涵盖了一般C程序开发所需的关于异常处理部分的细节。 1. throw可以抛出哪些种类…

Github pull request 工作流总结

github 上面有很多非常不错的开源项目,我们也可以向其贡献自己的代码,那么我们如何提交自己的代码给开源项目呢?这里就要用到 pull request 的提交方式。当然,基于 git 的其他平台也是类似的用法。 假设源仓库为:https…

[MEGA DEAL] Java编程-硕士课程(85%折扣)

获得有关Java所有事物的高级分步指导 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 。 我们提供的Java编程–硕士课程 仅售29美元,而不是原始价格149美元 ,是的,可享受…

java中对象别名使用_JAVA中的别名现象

问题的提出:在java中,对基本数据类型的赋值时,是将数据从一个地方复制到另外一个地方,当ab时,将b的内容复制给a,若修改a时,b并不会受到这种修改的影响。在对对象进行赋值时,当我们对一个对象进行…

C/C++中的运算符优先级总结

C语言中的运算符 说明 运算符 结合性 初等运算符 () [] -> . -> 单目运算符 ! ~ -- - (类型) * & sizeof <- 算术运算符 * / % -> 算术运算符 - -> 移位运算符 << >> -> 关系运算符 > > < < -> 关系运算符 ! -> 按位与…

nginx 直接在配置文章中设置日志分割

直接在nginx配置文件中&#xff0c;配置日志循环&#xff0c;而不需使用logrotate或配置cron任务。需要使用到$time_iso8601 内嵌变量来获取时间。$time_iso8601格式如下&#xff1a;2015-08-07T18:12:0202:00。然后使用正则表达式来获取所需时间的数据。 按天分割日志 使用下面…

javaone_JavaOne 2012:JavaOne技术主题演讲

javaoneMark Reinhold从JavaOne 2012技术主题演讲开始。 他说&#xff0c;今年的版本将有所不同&#xff0c;因为它将使用大致相同的示例来说明Java的各个方面&#xff0c;而不是对Java的每个组件进行单独的单独介绍。 JavaFX团队的Richard Bair和Jasper Potts &#xff08;并与…

java sqlserver 死锁_sqlserver数据库发生死锁处理

SQLSERVER数据库锁表1. 查看被锁的表select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableNamefrom sys.dm_tran_locks where resource_typeOBJECT2. 解除表的锁定declare spid intSet spid 57 --锁表进程declare sql varchar(1000)set sqlk…

setjump和longjump

int setjmp( jmp_buf env );void longjmp( jmp_buf env, int value );# setjmp(j)设置“jump”点&#xff0c;用正确的程序上下文填充jmp_buf 对象j。这个上下文包括程序存放位置、栈和框架指针&#xff0c;其它重要的寄存器和内存数据。当初始化完jump 的上下文&#xff0c;se…

jmeter操作数据库

1) jmeter不能直接连数据库&#xff0c;需要先添加jar包。 然后将jar包的路径添加到下图&#xff1a; 2) 操作数据库之前要知道数据库的信息&#xff08;ip、端口号、账号、密码&#xff09;&#xff0c;操作哪个数据库就连哪个&#xff1a; 在配置元件-JDBC Connectio…

使用Hystrix DSL创建弹性骆驼应用程序

Apache Camel是一个成熟的集成库&#xff08;到现在已有9年的历史了&#xff09;&#xff0c;它实现了Enterprise Integration Patterns一书中的所有模式。 但是Camel不仅是EIP实现库&#xff0c;它还是一个不断发展&#xff0c;添加新模式并适应行业变化的现代框架。 除了在每…

php7 对象转数组,php7中为对象/关联数组进行解构赋值

在CoffeeScript&#xff0c;Clojure&#xff0c;ES6和许多其他语言中&#xff0c;我们对对象/贴图/等进行了解构&#xff0c;如下所示&#xff1a;obj {keyA: Hello from A, keyB: Hello from B}{keyA, keyB} obj我在php中找到了这个list函数&#xff0c;可以让你像这样构造数…

虚函数表

虚函数   C中的虚函数的实现一般是通过虚函数表(C规范并没有规定具体用哪种方法&#xff0c;但大部分的编译器厂商都选择此方法)。 类的虚函数表是一块连续的内存&#xff0c;每个内存单元中记录一个JMP指令的地址。 注意的是&#xff0c;编译器会为每个有虚函数的类创建一个…

linux bash tutorial

bash read-special-keys-in-bash xdotool linux 登录启动顺序转载于:https://www.cnblogs.com/shaohef/p/9528927.html