深入探究gradle build的各個方面

一、gradle build的基本介紹

Gradle是一個基於JVM的構建工具,主要特點是靈活性和可擴展性。Gradle構建過程包含了三個階段:初始化階段、配置階段和執行階段。gradlew是Gradle wrapper,它能讓一個項目的用戶使用指定版本的Gradle進行編譯,而不需要安裝任何Gradle的版本。

二、gradle build的配置文件

Gradle的構建是由Groovy或Kotlin腳本編寫的,它們是放在build.gradle文件中的。Gradle的配置文件由兩部分組成:Project和Task,它們都是對象。在Gradle中,Project對象表示整個構建,並且在Gradle的配置文件中表現為根項目,而Task對象則表示Gradle構建中的一個單元。使用配置文件我們可以定義項目相關的屬性,配置插件,以及定義task等。

三、gradle build中常用的task

在Gradle的配置文件中,常常會使用Gradle中的Task。Task是指構建中的一個單元。我們可以通過依賴關係來定義task,也可以通過插件來創建task。在Gradle中,內置了很多task,這裡我們只介紹幾個常用task。

  • clean:刪除構建文件夾,這個task只有一個action,即刪除指定文件夾下的所有內容
  • compileJava:編譯Java源文件,它的依賴關係是Java源文件,Java編譯器和編譯輸出目錄。如果源文件在修改或者刪除,這個task將重新運行
  • test:運行單元測試
  • build:執行clean、compile和test等操作
task clean(type: Delete) {
    delete rootDir.path + '/build'
}

task build(dependsOn: ['clean', 'compileJava', 'test'])

四、gradle build中的插件

插件是Gradle的一個核心概念。通過插件,users可以使用Java、Groovy、Scala等語言開發各種各樣的應用。Gradle插件以Jar文件的形式出現,可以通過Gradle倉庫和Maven倉庫進行下載。通過使用其他人寫的插件,我們可以使用一些預製的Task,或者針對一些應用場景提供的特殊功能。

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
    }
}

apply plugin: 'java'

五、gradle build中的依賴管理

Gradle的依賴管理非常靈活,可以定義項目的依賴關係,引入第三方的jar包等等。

  • 引入外部依賴
    可以使用Maven的依賴語法,通過mavenCentral或jcenter倉庫來拉取外部依賴。
  • 定義項目依賴關係
    在Gradle中,可以通過dependencies塊和稱作依賴配置(Dependency Configuration)的塊來定義一個項目的依賴關係。
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile 'junit:junit:4.12'
    compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
}

六、gradle build中的額外配置

在Gradle中,可以使用buildSrc目錄下的build.gradle文件來定義一些額外配置,這些配置都是來增強Gradle本身的功能。比如添加一個自定義Task,構建腳本中經常會使用到,這樣可以讓構建邏輯的復用性更好。

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'com.google.code.gson', name: 'gson', version: '2.8.5'
}

task prettyPrintJson(type: JavaExec) {
    main = "com.google.gson.JsonParser"
    classpath = sourceSets.main.runtimeClasspath
    standardInput = System.in
    args = [
            '-n',
            '-i', 'src/main/resources/test.json'
    ]
    workingDir = file("$projectDir")
}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/160987.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-21 01:17
下一篇 2024-11-21 01:17

相關推薦

發表回復

登錄後才能評論