學習完畢 Gradle 的基礎知識,不來點實戰,感受就像沒有學習過啊。那咱們就搞一搞實戰,一共兩個簡單的操做。第一,寫一個自定義 Plugin。第二,寫一個自定義 Transform。java
網上通常都會說三種方法是去建立,我們就不來那麼多虛的,來個一勞永逸的吧,咱們直接新建一個工程來寫,這個會了,新建 Library 工程 和在 build.gradle 中的這兩種方式相信你也就會了。android
注意:我用的是 IntelliJ IDEA,這個就和 Android 沒有關係了。 api
選擇 Gradle 項目,勾選中 Groovy。bash
groupId、artifactId、version 三者肯定惟一庫。app
groupId:是項目組織惟一的標識符,實際對應JAVA的包的結構,是main目錄裏java的目錄結構。maven
artifactId:是項目的惟一的標識,實際對應項目的名稱,就是項目根目錄的名稱。ide
version:指的是版本號,注意:SNAPSHOT意爲快照,說明該項目還處於開發中,是不穩定的版本。 學習
由於咱們這個是 Gradle 項目,咱們要配置一下一些第三方依賴。gradle
plugins {
id 'groovy'
id 'maven'
}
group 'com.ssy.plugins'
version '1.0.0'
repositories {
mavenCentral()
google()
jcenter()
}
dependencies {
//Gradle Plugin 依賴
implementation gradleApi()
//本地發佈 Plugin
implementation localGroovy()
//由於咱們須要在android 項目中使用,因此須要android的tool build庫
implementation 'com.android.tools.build:gradle:3.3.2'
}
複製代碼
首先須要說明的是一個概念,就是好比咱們平時使用的 apply plugin: 'com.android.application'這個 plugin的名字是須要咱們進行配置的。ui
在 resources 文件夾下,新建一個 META-INF 文件夾,在 META-INF 裏新建 gradle-plugins 文件夾,最後建立咱們的 pluginName.properties,注意後綴哈。 好比我寫的就是com.ssy.plugins.ssyplugin.properties。個人 plugin id 就是com.ssy.plugins.ssyplugin。最後在這個文件中寫下咱們自定義 plugin的路徑。
建立 SsyPlugin.groovy 文件,注意:咱們是在groovy中寫的,不是java。
package com.ssy.plugins
import org.gradle.api.Plugin
import org.gradle.api.Project
import com.android.build.gradle.AppExtension
class SsyPlugin implements Plugin<Project> {
@Override
void apply(Project project) {
project.task("hello"){
println('hellow~~~~~~~')
}
}
}
複製代碼
到此咱們自定義的 plugin 就算是基本完成,簡單吧,而後咱們就要發佈咱們的 plugin。
在 build.gradle 文件中添加下面的代碼
uploadArchives {
repositories {
mavenDeployer {
//設置插件的GAV參數
pom.groupId = 'com.ssy.plugins'
pom.version = '1.0.0'
//文件發佈到下面目錄
repository(url: uri('../repo'))
}
}
}
複製代碼
點擊右邊 Gradle 中的uploadArchives,就能夠生成咱們jar包了。 固然咱們也能夠在 Terminal 中運行 ./gradlew uploadArchives 一個意思。
補充小知識:../repo,就是當前project 目錄的外層目錄。
一、./是當前目錄
二、../是父級目錄
三、/是根目錄
最後你就能夠找到 SsyPlugin-1.0.0.jar 了。
結束。手工~~
呸,還沒說怎麼用收你妹的工啊,額,好好,寫完回家,回~~家。
咱們新建一個 Android 項目,這個就不演示了。 首先,咱們須要把 repo 項目,從複製到,咱們android 項目的 父目錄,也就是和咱們這個項目平級。這樣咱們就能夠使用它了。
首先咱們須要在 項目的 gradle.build 中,不是 app 的 gradle.build,如圖吧,這樣明白一點。
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
//配置咱們倉庫地址
maven {
url uri('../repo')
}
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
//這個就是 倉庫中指定咱們須要的版本
classpath 'com.ssy.plugins:SsyPlugin:1.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
maven {
url uri('../repo')
}
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
複製代碼
小知識:classpath 是用來配置 buildscript 的。
好配置完 project 的 gradle.build ,咱們來配置 app 的 gradle.build。 直接使用就行了。
apply plugin:'com.ssy.plugins.ssyplugin'
複製代碼
好了,配置完畢。 咱們來檢驗一下咱們是否搞成功了。 命令行敲起來 ./gradlew hello。
ok ,完工,下一篇 自定義 Transform。