Gradle

本页使用了标题或全文手工转换
?基百科,自由的百科全?
Gradle
原作者 Hans Dockter
開發者 Gradle developers
?前版本
  • 8.7 (2024年3月22日;穩定版本) [1]
編輯維基數據鏈接
源代?? 編輯維基數據鏈接
?程?言 Java Groovy Kotlin
操作系? 跨平台
?型 自?化?建工具
?可?? Apache?可? 2.0
?站 http://www.gradle.org/

Gradle 是一?基于 Apache Ant Apache Maven ?念的?目 自?化建? 工具。Gradle ?建脚本使用的是 Groovy Kotlin 特定?域?言 ???的 [3] ,而不是??的 XML [4]

?前官方支持的?言? Java Groovy Scala C++ Swift JavaScript 等以及 Spring?架 [5]

使用 Gradle 的優勢 [ ?? ]

  • 自動處理套件相依關係 - 取自 Maven Repos 的?念
  • 自動處理佈署問題 - 取自 Ant 的?念
  • 條件判斷寫法直覺 - 使用 Groovy 語言

過去 Java 開發者常用 Maven 和 Ant 等工具進行封裝佈署的自動化,或是兩者兼用,不過這兩個套件彼此有優缺點,如果頻繁改變相依套件版本,使用 Ant 相當麻煩,如果?碎工作?多,Maven 功能不足,而且兩者都使用 XML 描述,相當不利於設計 if、switch 等判斷式,?使寫了可讀性也不佳,而 Gradle 改良了過去 Maven、Ant 帶給開發者的問題,至今也成? Android Studio 內建的封裝佈署工具。

?念 [ ?? ]

?件 [ ?? ]

由于Gradle 的核心功能???世界提供了?少的自?化,其他?用性功能都是由?件提供 [6] [7] ,所以往往在使用了Gradle?候,往往都?使用?件以完整自?化操作。在特定的 上下文 ?境下,Gradle ?件提供?用???合适的默?事?以及?准( ?例 )。 [8] ?言之,?件是????境和上下文的一??充和?展。

使用?件分?步:解析?件、?用?件。 [9] Gradle?件常?的????? apply plugins ,前者??是?用?件,后者是?分析又?用?件。 [9]

依??束 [ ?? ]

依??束(Dependency constraint),用于?助模?去?取一?可用的依?。依??束,可以?小模?的可支持版本的范?。而且?也能适用于??依?(transitive dependencies)。 [10] 示例如下:

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。 [11] 在java?件中, compile ???(???依?)已???,取而代之是 implementation ??? [12] ,而在java-library中可使用 api implementation ???表示依?。 [13]

Java Application?件 [ ?? ]

Application?件,用于?建可?行的 JVM ?用。 [11]

Java Library?件 [ ?? ]

Java依?包?件用于提供Java依?包的??知?。 java-library?件增加了API的?念。 implementation api ?????在于: api 所依?的依?包,?作???目的API被暴露于?用者; implementation 所依?的依?包,不?作???目的API而暴露于?用者,?用者如果需要使用?依?包需要?外?明。 [13]

Java Platform?件 [ ?? ]

Java平台?件?Java生?系?提供平台的功能。平台可用于各?目的,如: [14]

  • 各?子?目使用同一?版本?和描述,?行?布。
  • ?使用者提供一?推?的版本的依?包?合。
  • 在不同的子?目中,共享依?版本。

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

?考文? [ ?? ]

  1. ^ Release 8.7 .  
  2. ^ Gradle Distributions . Gradle Services. [ 2022-01-09 ] . ( 原始?容 存?于2021-02-03).  
  3. ^ Gradle User Manual . docs.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2021-02-03).  
  4. ^ 存?副本 . [ 2013-07-03 ] . ( 原始?容 存?于2013-04-15).  
  5. ^ Building Java Applications . guides.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2020-10-26).  
  6. ^ Using Gradle Plugins . docs.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2020-11-23).  
  7. ^ Gradle ?件 - Gradle 用?指南官方文?中文版 - UDN?源文? . doc.yonyoucloud.com. [ 2020-02-21 ] . (原始?容 存? 于2020-02-21).  
  8. ^ Designing Gradle plugins . guides.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2020-10-26).  
  9. ^ 9.0 9.1 Using Gradle Plugins . docs.gradle.org. [ 2020-02-23 ] . (原始?容 存? 于2020-11-23).  
  10. ^ Dependency Management Terminology . docs.gradle.org. [ 2020-02-24 ] . (原始?容 存? 于2020-02-21).  
  11. ^ 11.0 11.1 The Java Plugin . docs.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2021-02-03).  
  12. ^ The Java Plugin . docs.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2021-02-03).  
  13. ^ 13.0 13.1 The Java Library Plugin . docs.gradle.org. [ 2020-02-21 ] . (原始?容 存? 于2020-12-23).  
  14. ^ The Java Platform Plugin . docs.gradle.org. [ 2020-02-23 ] . (原始?容 存? 于2020-10-28).  

?? [ ?? ]