Android studio 创建 Android plugin 小记
1:首先创建一个Android项目
2:创建了一个module,我这边创建的是library,取名叫做plugins,删除了里面所有的内容,只剩下build.gradle,还是就是gitignore和imi文件,
3:新建了src/main下面的文件,最后新建了一个Myplugin文件,刚开始时候Androidstudio识别不出来,最后把studio 关了之后重新开启就好了
4:新建了resources文件夹,里面有个myplugin.properties文件,内容为
implementation-class=com.alog.PluginImpl.MyPlugin,用于识别当前的plugin
groovy中的内容是这样的
只是简单的打印下
写完上面的内容之后,想把它推到本地的maven仓库中,内容是这样的
apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'com.jfrog.artifactory'
apply plugin: 'maven-publish'
dependencies {
compile gradleApi()
compile localGroovy()
}
repositories {
mavenCentral()
}
version 1.0
group "com.asm"
publishing {
publications {
Component(MavenPublication) {
from components.java
groupId = group
artifactId = POM_ARTIFACT_ID
version = version
}
}
}
task buildAndPublishToLocalMaven(type: Copy, dependsOn: ['build', 'publishToMavenLocal']) {
group = 'asmtest'
// save artifacts files to artifacts folder
from configurations.archives.allArtifacts.files
into "${rootProject.buildDir}/outputs/artifacts/"
// rename { String fileName ->
// fileName.replace("release.aar", "${version}.aar")
// }
doLast {
println "* published to maven local: ${project.group}:${project.name}:${project.version}"
}
}
执行buildAndPublishToLocalMaven任务,这样就能在本地的maven仓库中看到,默认是这个路径.m2的下面
若想要推送到JFrog Artifactory中,我这边是这么写的
def artifactVersion = '1.0.0'//发布的版本
publishing {
publications {
mainJava(MavenPublication) {
groupId = 'com.test' //填写GroupId
artifactId = POM_ARTIFACT_ID
version = artifactVersion
from components.java
}
}
}
task sourceJar(type: Jar) {
from sourceSets.main.allJava
}
artifactory {
contextUrl = "http://10.111.24.119:8081/artifactory"//本地仓库地址
publish {
repository {
/**
repoKey:指定发布到的仓库名称
*/
//这里判断了当前发布的版本是不是‘快照’版本;
//其中'libs-snapshot-local' : 'lib-aar'是两个仓库名称
repoKey = artifactVersion.endsWith('SNAPSHOT') ? 'libs-snapshot-local' : 'libs-release-local'
username = "admin" // 发布者用户名
password = "123456" // 发布者密码
maven = true
}
defaults {
publishArtifacts = true
//这里的'mainJava'对应publishing任务中的'mainJava',任务名称可自定义
publications('mainJava')
publishPom = true //Publish generated POM files to Artifactory (true by default)
publishIvy = false //Publish generated Ivy descriptor files to Artifactory (true by default)
}
}
resolve {
repository {
repoKey = 'jcenter'
username = "admin" // 发布者用户名
password = "123456" // 发布者密码
}
}
}
这样子我就能在jfrog中看到我刚才推送的文件了
这边遇到的问题是一直传不上去,报这个错
后来修改了
classpath 'org.jfrog.buildinfo:build-info-extractor-gradle:4.7.3'这个的版本号,以前是4.1.1的
最后就是怎么使用这个plugin了
首先引入
最后
apply plugin: 'myplugin'就可以了
它的格式是
groupId:artifactId:version
引入后执行一下build,就能看到我们打印的了
仅此记录一下