目测现在网上发布aar的方法的教程都是一个版本,也就是maven-plugin为1.3,jfrog为1.0那个版本,老掉牙了有木有,还是自己写个给自己备用吧。授之以鱼不如授之以肉,从头开始流程走一遍。
零、新建项目
新建一个项目起名为YourLibraryDemo,然后新建一个Module->Library起名为YourLibrary。
这个Module就是将来要给别人使用的你的库了。
一、引入gradle-bintray-plugin
The Gradle Bintray Plugin allows you to publish artifacts to Bintray.
大意是这个插件允许你发布你的作品到Bintray(某国外网站,部分地区需FQ)
在项目根目录下有个build.gradle,先在这里添加
plugins {
id "com.jfrog.bintray" version "1.7.3"
}
上面这一步替代了旧版本中的在dependencies中添加classpath
去jFrog注册个账户,然后各种填完了找到自己资料里面的API Key。
然后进YourLibrary下的build.gradle添加
bintray {
user = System.getenv('BINTRAY_USER')
key = System.getenv('BINTRAY_KEY')
}
要说这个System.getenv是什么玩意儿,就是为了防止你把你的bintray账户的user和key传到github中开源了。
那么user和key要放到哪里呢?
回到项目的根目录local.properties中加入
BINTRAY_USER=yzlee
BINTRAY_KEY=你的key
再回到YourLibrary下的build.gradle添加
bintray {
user = properties.getProperty('BINTRAY_USER') //这里注意原Demo不是这么写的,还有上面两行也别忘了
key = properties.getProperty('BINTRAY_KEY')
//目测有三种方式打包上传到bintray,我们要用Maven Publications模式。
// Configurations 模式貌似只能在java plugin下使用,反正尝试gradlew bintrayUpload之后,网站上是看不到的。
//安卓上要用的话例子在{@link https://github.com/bintray/bintray-examples/tree/master/gradle-bintray-plugin-examples/android-maven-example}里。
configurations = ['archives']
pkg {
repo = "maven" //在bintray中的已经存在的仓库,貌似有好多现成的比如'maven' 'nuget' 'boxes' 'registry' 'generic' 'rpm' 'opkg' 等等等等……还可以自己创建
name = 'YourLibrary' //项目名字
licenses = ['Apache-2.0'] //开源许可
vcsUrl = 'https://github.com/yzlee/YourLibrary.git' //如果这个项目不存在的话,是要强制填写的。
//version {
// name = '1.0' //这个是版本号,建议不要写,而是定义一个全局的版本号
//}
publish = true //一定要填写,这个不填写bintrayUpload默认是不发布的!!!!!!!!
}
}
照着安卓例子复制粘贴就行了,不过授之以渔的话还是要搞明白到底别的东西是啥。所以再看要引入的另一个包。
二、引入android-maven-gradle-plugin
android-maven-gradle-plugin 地址
找到刚刚
plugins {
id "com.jfrog.bintray" version "1.7.3"
}
的地方添加一行
plugins {
id "com.jfrog.bintray" version "1.7.3"
id "com.github.dcendents.android-maven" version "1.5"
}
然后在YourLibrary下的build.gradle文件里的最外层加上
group = 'cn.liyongzhi' //这个就是引入依赖时候的前缀了。
version = '1.0' //这就是版本,bintray{}中的版本还是不要写了,默认用这个
至于install{}那个选项,是因为想要同步到Maven Central给别人使用的话,除了aar还需要sourcesJar,javadocJar,以及一个叫pom.xml的东西,而install中就是这个pom。这是发布到maven的requirements。
先说sourcesJar,javadocJar……好吧没搜到出处。拿来用吧
task sourcesJar(type: Jar) {
from android.sourceSets.main.java.srcDirs
classifier = 'sources'
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives javadocJar
archives sourcesJar
}
至于这个install不写的话bintray上也会有pom.xml,内容只有bintray{}上填的几行,应该也可以。
之后直接在android studio log窗口底下的teminal中打上 gradlew bintrayUpload 就好了。
如果网站上能找到了,那么add to JCenter,等就好了,估计有时差。
出现问题
1、javadocJar编译不过。
在library的build.gradle中添加
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
options.addStringOption('encoding', 'UTF-8')
options.addStringOption('charSet', 'UTF-8')
}