Gradle
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。Gradle 构建脚本使用的是 Groovy 或 Kotlin 的特定领域语言来编写的[2],而不是传统的XML。[3] 当前官方支持的语言为Java、Groovy、Scala、C++、Swift、JavaScript等以及Spring框架[4]。 使用 Gradle 的優勢
過去 Java 開發者常用 Maven 和 Ant 等工具進行封裝佈署的自動化,或是兩者兼用,不過這兩個套件彼此有優缺點,如果頻繁改變相依套件版本,使用 Ant 相當麻煩,如果瑣碎工作很多,Maven 功能不足,而且兩者都使用 XML 描述,相當不利於設計 if、switch 等判斷式,即使寫了可讀性也不佳,而 Gradle 改良了過去 Maven、Ant 帶給開發者的問題,至今也成為 Android Studio 內建的封裝佈署工具。 概念插件由于Gradle 的核心功能为真实世界提供了很少的自动化,其他实用性功能都是由插件提供[5][6],所以往往在使用了Gradle时候,往往都会使用插件以完整自动化操作。在特定的上下文语境下,Gradle 插件提供给用户对应合适的默认事项以及标准(惯例)。[7] 换言之,插件是对真实环境和上下文的一个补充和扩展。 使用插件分两步:解析插件、应用插件。[8]Gradle插件常见的两种关键词 依赖约束依赖约束(Dependency constraint),用于帮助模块去获取一个可用的依赖。依赖约束,可以缩小模块的可支持版本的范围。而且这也能适用于传递依赖(transitive dependencies)。[9] 示例如下: 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,会影响到应用'
}
}
}
插件JavaJava PluginJava插件为项目提供了Java编译、测试以及其他一系列功能。同时Java插件是其他JVM语言插件的基础。官方文档不建议使用者再直接使用Java插件,而应该使用基于Java插件的衍生插件,如:java-library和application。[10] 在java插件中, Java Application插件Application插件,用于创建可执行的 JVM 应用。[10] Java Library插件Java依赖包插件用于提供Java依赖包的专门知识。 java-library插件增加了API的概念。 Java Platform插件Java平台插件为Java生态系统提供平台的功能。平台可用于各种目的,如:[13]
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
参考文献
参见 |
Portal di Ensiklopedia Dunia