一、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-tw/n/160987.html