在这篇文章中,我们将介绍有关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