Gradle的使用——gradle是什么?

本文介绍了Gradle,一款基于Ant和Maven理念的自动化构建工具,强调其使用Groovy或Kotlin简化依赖管理和部署,以及Java开发者如何从Maven和Ant转向Gradle的便利。Gradle插件系统和依赖约束的使用也进行了详细讲解。
摘要由CSDN通过智能技术生成

Gradle的使用——gradle是什么?

简介

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的,而不是传统的XML。

Gradle.png

使用 Gradle 的优势

  • 自动处理包相依关系 - 取自 Maven Repos 的概念
  • 自动处理布署问题 - 取自 Ant 的概念
  • 条件判断写法直觉 - 使用 Groovy 语言
    过去 Java 开发者常用 Maven 和 Ant 等工具进行封装布署的自动化,或是两者兼用,不过这两个包彼此有优缺点,如果频繁改变相依包版本,使用 Ant 相当麻烦,如果琐碎工作很多,Maven 功能不足,而且两者都使用 XML 描述,相当不利于设计 if、switch 等判断式,即使写了可读性也不佳,而 Gradle 改良了过去 Maven、Ant 带给开发者的问题,至今也成为 Android Studio 内置的封装布署工具。

概念

插件

由于Gradle 的核心功能为真实世界提供了很少的自动化,其他实用性功能都是由插件提供,所以往往在使用了Gradle时候,往往都会使用插件以完整自动化操作。在特定的上下文"上下文 (计算机)")语境下,Gradle 插件提供给用户对应合适的默认事项以及标准惯例。换言之,插件是对真实环境和上下文的一个补充和扩展。

使用插件分两步:解析插件、应用插件。Gradle插件常见的两种关键词applyplugins ,前者仅仅是应用插件,后者是既分析又应用插件。

依赖约束

依赖约束(Dependency constraint),用于帮助模块去获取一个可用的依赖。依赖约束,可以缩小模块的可支持版本的范围。而且这也能适用于传递依赖(transitive dependencies)。
示例如下:

dependencies {
    implementation 'org.apache.httpcomponents:httpclient'
    constraints {
        implementation('org.apache.httpcomponents:httpclient:4.5.3') {
            because '之前的版本有bug,会影响到应用'
        }
        implementation('commons-codec:commons-codec:1.11') {
            because ' 从httpclient获取的 1.9 版本有bug,会影响到应用'
        }
    }
}

插件

Java

Java Plugin

Java插件为项目提供了Java编译、测试以及其他一系列功能。同时Java插件是其他JVM语言插件的基础。官方文档不建议用户再直接使用Java插件,而应该使用基于Java插件的派生插件,如:java-library和application。在java插件中,compile 关键词(编译时依赖)已经废弃,取而代之是 implementation 关键词,而在java-library中可使用apiimplementation关键词表示依赖。

Java Application插件

Application插件,用于创建可执行的 JVM 应用。

Java Library插件

Java依赖包插件用于提供Java依赖包的专门知识。 java-library插件增加了API的概念。implementationapi关键词区别在于:api所依赖的依赖包,会作为该项目的API被暴露于调用者;implementation 所依赖的依赖包,不会作为该项目的API而暴露于调用者,调用者如果需要使用该依赖包需要另外声明。

Java Platform插件

Java平台插件为Java生态系统提供平台的功能。平台可用于各种目的,如:

  • 各个子项目使用同一个版本号和描述,进行发布。
  • 为用户提供一个推荐的版本的依赖包组合。
  • 在不同的子项目中,共享依赖版本。

Ant迁移示例

Gradle与Ant有很紧密集成,甚至在构建时可以把Ant构建脚本直接导入。下面的例子展示了一个简单的Ant target被引入为一个Gradle task。

build.xml

<project>
  <target name="ant.target">
    <echo message="Running ant.target!"/>
  </target>
</project>

build.gradle

ant.importBuild 'build.xml'

运行 gradle ant.target 将显示如下结果

> gradle ant.target :ant.target
[ant:echo] Running ant.target!

BUILD SUCCESSFUL

本文内容来源于基维百科,请大家进行参考。

本文声明:
image
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN華少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值