摇篮配置

在这篇文章中,我们将介绍有关Gradle配置的综合文章。

1.技术

Gradle是用于自动任务管理的开源构建工具。 它基于Apache Ant,Apache Maven的概念。 Gradle是使用Groovy语言开发的。 Gradle是使用基于Groovy的领域特定语言(DSL)开发的。 Gradle构建以Apache Maven的形式包含Groovy语言的任务,而Apache Ant构建文件为XML格式。

Gradle使用有向无环图(DAG)确定执行任务的顺序。 Gradle是为多项目构建而设计的,这意味着一个项目将有许多子项目,并且可以增长到很多子项目。 Gradle的独特功能是通过智能确定构建树的哪些部分被修改,哪些未被修改,来支持增量构建。 如果树中的某些部分未修改,则将通过显示最新状态来跳过它,而其他部分将被重新执行,这将减少项目的构建时间。

2. Java项目结构

与Maven目录结构类似,Gradle的项目结构还将包含src / main / java和src / main / resources用于Java类和类路径资源,src / test / java和src / test / resources将包含测试类和相应地测试资源。

3.摇篮配置

Gradle是指定依赖项的基本概念。 使用配置,我们可以指定依赖关系,这些依赖关系可以在本地缓存或Maven Central存储库或在Gradle构建文件中配置的任何存储库中。

通过将Maven构建文件(pom.xml)和ant构建文件(build.xml)导入Gradle构建文件(build.gradle),还支持Gradle。

默认情况下,Gradle支持以下配置:

实作

实施配置应视为默认配置。 我们使用它来声明我们不想暴露给使用者的编译时的依赖项。 引入此配置是为了替换已弃用的编译配置,以避免污染使用者的编译时,而实际上我们不想暴露这些依赖。

a)Gradle将依赖项添加到编译类路径中,并将依赖项打包到生成输出中。 但是,当您的模块配置实现依赖项时,它会让Gradle知道您不希望该模块在编译时泄漏对其他模块的依赖项。 即,该依赖关系仅在运行时可用于其他模块。

b)使用此依赖项配置而不是API或编译(不建议使用)可以显着缩短构建时间,因为它减少了构建系统需要重新编译的模块数量。 例如,如果实现依赖项更改其API,则Gradle仅重新编译该依赖关系和直接依赖于该依赖关系的模块。 大多数应用程序和测试模块应使用此配置。

API

我们使用API​​配置确实声明了属于我们API的依赖项,即,对于我们明确希望公开给我们的使用者的依赖项。 这是唯一将依赖项暴露给使用者的编译时的标准配置。

a)Gradle将依赖项添加到编译类路径并生成输出。 当模块包含API依赖项时,它会让Gradle知道该模块希望将该依赖项可传递地导出到其他模块,以便它们在运行时和编译时都可用。

b)此配置的行为就像编译一样,但是您应谨慎使用它,并且仅应将需要的依赖项可传递地导出到其他上游使用者。 这是因为,如果API依赖关系更改了其外部API,则Gradle会在编译时重新编译所有可以访问该依赖关系的模块。 因此,拥有大量的API依赖关系会显着增加构建时间。 除非您希望将依赖项的API公开给单独的模块,否则库模块应该使用实现依赖项。

仅编译

使用compileOnly配置,可以声明仅在编译时才可用的依赖项,而在运行时不可用。 例如Project,Lombok是库,它在编译时修改字节码,并通过使用注释将更多方法添加到类中。 一旦生成了更新的字节码,就不需要在类路径中显示字节码,因为这些类型的库将使用此配置。

仅运行时

Gradle仅将依赖项添加到构建输出中,以在运行时使用。 也就是说,它不会添加到编译类路径中。 例如,数据库驱动程序,我们曾在配置中指定驱动程序的类名,但并不需要在编译时显示,它仅在运行时有用。

注释处理器

要在作为注释处理器的库上添加依赖项,必须使用注释处理器配置将其添加到注释处理器类路径中。 这是因为使用此配置可​​以通过将编译类路径与注释处理器类路径分开来提高构建性能。 如果Gradle在编译类路径上找到注释处理器,则会停用编译回避,这会对构建时间产生负面影响(5.0或更高版本,在编译类路径上找到忽略注释处理器)。

测试实施

与实现配置类似,测试实现配置用于指定在测试的编译和运行期间可用的依赖项。 例如,仅在编译或执行测试时才需要Junit和Mocking库。

testCompileOnly

与编译类似,仅依赖项仅在测试类编译时可用,而在测试运行时不可用。

testRuntimeOnly

类似于runtimeOnly,这些依赖项在执行测试时可用,但在测试编译时不可用。

以上都是默认情况下Gradle提供的配置,我们可以使用自定义配置,在自定义任务中指定这些自定义配置。 Gradle还支持配置中的继承。 我们可以使用来自配置属性的扩展来指定基本配置。

configurations {testCompileOnly.extendsFrom compileOnly
}

所有完整的配置依赖项都将被复制到testCompileOnly Configuration,这将删除Gradle构建文件中的重复规范。

4. Gradle配置–结论

在当前博客中,我们了解了Gradle构建工具,并增加了Gradle相对于Maven,Ant构建工具的优势。 我们详细研究了Gradle配置,在其中如何指定每个配置级别的依赖项。

在本文中,我将描述您需要工程师利用Gradle注意Java Web应用程序的所有内容 。 我已经完成了无数可以想到的Gradle巨大的Java冒险。 它提供快速的监督和运输。 利用Gradle轻松安排您的事业。

翻译自: https://www.javacodegeeks.com/gradle-configuration.html

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

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

相关文章

java的封装性的优点_18、Java的三大特性之封装

Java的三大特性java是一个面向对象的语言,所以java也有面向对象语言的三大特性:继承,封装,多态,任何一个java项目,都会用到这三种特性,所以掌握好这三大特性非常的重要。封装我们为什么要使用封…

groovy 字符串截取最后一个_Java基础篇——字符串详解

字符串的声明字符串是内存中连续排列的0个或多个字符。不变字符串是指字符串一旦创建,其内容就不能改变,Java中使用String类来处理不变字符串,在对String类的实例进行查找、比较、拼接等操作时,既不能输入新字符,又不能…

eclipse插件开发_开发Eclipse插件

eclipse插件开发最近,我开始与一个团队合作开发Eclipse插件。 团队开发了一个很棒的插件,可以实现预期的目的。 因此,我检查了源并尝试构建它。 项目源包含所有必需的库,并且只能在Eclipse中构建。 在当今不断交付的世界中&#x…

java中链式调用_Java及Android中常用链式调用写法简单示例

本文实例讲述了Java及Android中常用链式调用写法。分享给大家供大家参考,具体如下:最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形式进行调用,最典型的就是RxJava。android…

Java记录

https://openjdk.java.net/jeps/359概述了新的Java功能,该功能可能会/将在某些将来的Java版本中实现。 JEP建议使用一种新型的“班级”:记录。 JEP中的示例内容如下: record Range( int lo, int hi) { public Range { if (lo > hi) /* ref…

C什么k什么_K线图基础知识丨什么是K线散兵坑形态?K线散兵坑形态的操作与案例详解...

本文总共999字,预计阅读需要3分钟今天我们给大家带来的是K线散兵坑形态,那么K线散兵坑形态应该怎么来操作呢?今天我们就结合相应的实战案例来为大家讲解一下吧。K线散兵坑形态的简介散兵坑是指在股价缓慢上涨过程中.成交量也逐渐放大&#xf…

support v4官方下载_掌心长兴客户端下载-掌心长兴ap下载v4.1.4 安卓官方版

掌心长兴app是一款为广大用户开发的新闻资讯软件。在这里用户可以清晰的了解今日热点新闻,最新新闻直播电台应有尽有!让你全方面了解周边新鲜事!还有各种常用功能的代办查询服务。有需要的用户,欢迎现在下载体验哦掌心长兴客户端介…

java简单计算机程序_JAVA程序编的简单计算器程序??

1 文件名:Calculate_GUI。javaimport javax。swing。*;import t。Container;import t。event。*;public class Calculate_GUI extends JFrame{private JPanel p1;private JButton keyButton[]new JButton[16],signButton,clearButton,deleteButton;private JTextFie…

javafx 调用java_Java验证(javafx)

javafx 调用java验证是核心javafx框架所缺少的一件事。 为了弥补这一空白, controlsfx中已经存在一个第三方验证库 。 但是,我有一个问题:它不是在考虑FXML的情况下创建的。 这并不是说它不是一个很好的库,只是错过了这个细节&…

win10分辨率不能调整_Win10系统分辨率不能修改怎么办?屏幕分辨率的调节方法...

Win10系统电脑屏幕分辨率无法调节怎么办?电脑屏幕分辨率不能修改怎么办?近日有很多用户询问电脑显示器分辨率不能修改的问题,下面就给大家分享解决方法。解决方法:1、在win10系统桌面空白处单击鼠标右键,在弹出的菜单中…

java springmvc权限校验_详解Spring MVC使用Filter实现登录及权限验证判断

登录和权限验证判断在后台管理系统中是最常用的功能,这部分代码是比较固定和独立的,为了减少对业务代码入侵性,一般我会考虑使用Filter来实现,下面我就来详细说一下我的实现思路和代码:前台页面:String pat…

笔记本电脑电源已接通未充电_dell xps15 电源已接通 未充电 维修方法

(去年写的文章,在知乎也存一份)网上类似的文章很多,这里总结一下,这个问题按照严重程度可以分为四个层次:电源计划问题,大部分百度出来说的都是这个,实际上这个问题 等于没有问题。改…

cors spring_Spring,REST,Ajax和CORS

cors spring假设您正在为客户端开发基于JavaScript的项目,并且他通过其余的Web服务向服务器发出ajax请求,那么您可能会遇到一些麻烦,尤其是如果双方都在单独的域中。 实际上,出于安全原因,从一个域A到另一域B的Ajax请…

mysql bc_正则表达式——MySQL搜索过滤

正则表达式介绍在数据库的数据过滤过程中只用WHERE子句和LIKE操作符都是对于已知值进行的不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,都是使用已知的值当然MySQL语句也提供了通配符百分号(%)和下划线(_)来匹配多…

everything安装版和便携版有什么区别_A2奶粉内幕:国行版和澳洲版有什么区别 贵的不一定好!...

点击上方蓝字 关注我们申明:此文章来自第三方平台,绝无倾向性诱导。二桐粑粑转载分享。A2是全球首款添加了“A2-β酪蛋白”的奶粉,由新西兰A2公司于2013年推出,这款奶粉在澳洲一上架,就被妈妈们一扫而空。之后A2公司针…

哈希杰森

我最近写了一个简单的库,可预测地对json进行哈希处理 。 该实用程序基于出色的Jackson Json解析库构建 问题 我需要从相当大的基于json的内容生成的哈希值,以便稍后确定内容是否发生了更改。 将json视为字符串不是格式化的选项,键改组可能会…

java 什么时候用递归_如果要用Java实现算法,一定慎用递归

现象 :递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述、表现和代码结构理解上,递归都是不错的选择!但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而是转换…

excel分两个独立窗口_Excel2010 多个独立窗口,解决单窗口无法显示多个文件的问题...

当我们需要编辑多个excel的时候,就会发现一个问题,Excel不能一个窗口下显示多个文档,每次编辑都进行切换就太麻烦了,那如何能解决这个问题呢?接下来跟我一起看看吧!首先在开始菜单输入regedit.exe命令&…

jsp代码会被翻译成java代码吗_JAVA jsp技术

JSP的本质是一个类文件,它存储于tomcat(如果你使用tomcat)目录下的work文件夹中,该类文件继承了HttpJspBase类,而HttpJspBase类继承了HttpServlet类,所以其实质是一个servlet的类文件JSP脚本:1) ----- 内部的java代码翻…

excel冻结窗口_excel怎么冻结窗口?excel冻结窗口怎么设置?

excel冻结行或列的技巧教程:一、冻结第一列1.选择 视图 > 冻结窗格 > 冻结第一列。2.列A和列B之间出现的细线表明第一列已冻结。二、冻结前两列1.选择第三列。2.选择 查看 > 冻结窗格 > 冻结窗格。三、冻结列和行1.选择要在滚动时保持可见的行下方和列右…