1、插件
插件:就是用来定义并具体执行这些Task 的东西。
1.1 apply函数
apply 是一个函数,可以加载打包好的插件或者其他的gradle文件。
void apply(Closure closure);
void apply(Action<? super ObjectConfigurationAction> action);
//常用
void apply(Map<String, ?> options);
apply函数在参数map中可以包含三类键值对:plugin、from、to
- from:应用一个脚本到本地
- plugin:应用一个插件
- to:应用到某个对象
- Java 相关的Gradle插件
apply plugin:'java'
apply plugin: 'java-library'
- Android 相关的Gradle插件
apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
apply plugin: 'com.android.test'
- 其他
apply plugin: 'com.android.dynamic-feature'
apply plugin: 'maven'
//从指定路径中加载某个脚本
apply from: rootProject.getRootDir().path + "/xxx/xxx"
//只有??一个模块加载了 apply plugin: 'com.android.library'插这个模块才能发布打包成aar或者jar
2、常见插件
2.1 apply plugin: 'com.android.application' 插件
//android{ }是工程中的Android app配置项的的入口
android{
compileSdkVersion 28
buildToolsVersion '28.0.3'
//其中的一个配置块,负责默认配置,比如包名和版本号等
defaultConfig {
applicationId "com.example.myapp"
minSdkVersion 23
targetSdkVersion 29
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
// 引入依赖
// TODO需要继续考证,参考 https://baijiahao.baidu.com/s?id=1628320215436928396&wfr=spider&for=pc
dependencies{
}
//========================================================
2.2 apply plugin: 'maven'插件
- uploadArchives:是一个发布类库到中央仓库的Task,我们需要为它指定本地仓库路径以及类库的一些信息,在类库模块的build.gradle中添加task
//应用插件
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
// 配置仓库路径,项目根目录下的repository目录中
// 可以是本地仓库也可以是远程仓库
//当version 后缀为'-SNAPSHOT'时,会自动使用snapshotRepository TODO 实现源码,没有找到源码??
repository(url: uri('../repository')){
authentication(userName: 'username', password: 'pwd')
}
snapshotRepository(url:'http://xxxxxx.com'){
authentication(userName: 'username', password: 'pwd')
}
// 使用 pom.project 这个builder,可以将任何与Maven相关的POM Reference 元素添加进去
// http://maven.apache.org/pom.html
pom.project {
version rootProject.ext.sdk_version_name + '-SNAPSHOT'
artifactId 'common'
groupId 'com.example.mylib'
packaging 'aar'
}
}
}
}
2.3 apply plugin: 'maven-publish'插件
maven-publish是一个Gradle插件,可以将输出的artifacts发布到Maven仓库中。 Maven Publish Plugin官网 使用:
- 复写publishing节点
- 在该节点中包含两个配置:publications 和 repositories
//应用插件
apply plugin: 'maven-publish'
ext {
DIR = "build/outputs/aar/"
}
publishing {
repositories {
maven {
// url uri('../maven_repo')
url = 'http://www.example.com/library'
// 仓库的用户名和密码
credentials {
username myusername
password mypwd
}
}
}
publications {
customName(MavenPublication) {
// 唯一标识(通常为模块包名,也可以任意)
groupId 'com.example.mylib'
// 项目名称(通常为类库模块名称,也可以任意)
artifactId project.name
// 版本号
// version = "1.0.0"
version '1.2.3.300'
}
}
}