说明:
1.演示如何使用Android Studio开发自定义Plugin和如何正确上传本地
参考资料:
1、GitHub - Ololoshechkin/plugin-verifier (用于参考publish时的gradle配置)
2、https://github.com/Leifzhang/AndroidAutoTrack.git (用于参考多个自定义plugin的项目配置)
创建通用发布mavenPublish.gradle
apply plugin:"maven-publish"
configure(allprojects) {
apply plugin: 'java'
group = 'test.plugins'
version = '1.0'
//build .jar with sources
task sourcesJar(type: Jar, dependsOn: classes) {
getArchiveClassifier().set('sources')
from sourceSets.main.allSource
}
// 打包javadocJar任务
task javadocJar(type: Jar) {
getArchiveClassifier().set('javadoc')
from javadoc
}
// 解决javadoc打包乱码
javadoc {
if(JavaVersion.current().isJava9Compatible()) {
options.addBooleanOption('html5', true)
}
options {
encoding "UTF-8"
charSet 'UTF-8'
author true
version true
title "文档大标题"
}
}
artifacts {
archives sourcesJar
archives javadocJar
}
}
publishing {
publications {
def configurePublication = { MavenPublication pub, String projectName ->
def proj = project(projectName)
pub.groupId proj.group
pub.artifactId proj.name
pub.version proj.version
pub.from proj.components.java
proj.artifacts
pub.artifact proj.sourcesJar
pub.artifact proj.javadocJar
}
BasePublication(MavenPublication) { configurePublication(it, ':BasePlugin') }
AutoTrackPlugin(MavenPublication) { configurePublication(it, ':AutoTrackPlugin') }
double_tap_plugin(MavenPublication) { configurePublication(it, ':double_tap_plugin') }
multiPlugin(MavenPublication) { configurePublication(it, ':multiPlugin') }
thread_hook_plugin(MavenPublication) { configurePublication(it, ':thread_hook_plugin') }
}
repositories {
maven {
def releasesRepoUrl = "../maven/repos/release"
def snapshotsRepoUrl = "../maven/repos/debug"
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
}
}
}
mavenPublish.gradle使用方式
依赖mavenPublish.gradle之后,在Tasks里点击publish生成maven文件夹,里面会有很多jar包,这些jar包就是生成的plugin插件