最近想创建一个自己的maven库,这样开发的时候就不用总是导入module了,于是从头到尾学习了一下,现在记录下来
首先新建一个project,跟着在里面新建一个module,我有自己的module,所以直接导入了一个
接着,配置module里面的build文件,用来生成maven文件,再此之前,现在本地电脑里面新建一个文件夹,用来存储生成的maven文件
我的这个文件夹就是 E:\ASproject\GitHub\Permission ,等会这个路径我们需要使用到。
在module里面的build文件最前面中加入
apply plugin: 'maven'
然后
uploadArchives {
repositories.mavenDeployer {
def mavenDirPath = file('E:\\ASproject\\GitHub\\Permission')
repository(url:"file://${mavenDirPath.absolutePath}")
pom.project {
groupId "com.github.hl"
artifactId "permission"
version "1.0.0"
}
}
就这段话,file后面就是刚刚新建的本地文件夹地址,url后面必须是双引号,至于pom.project里面的三个参数随便写,但最终使用的,就是你写的这三个参数,一般是 包名,库名,版本号,引用的时候,就是
implementation 'com.github.hl:permission:1.0.0'
这样就配置完了
然后运行 编译,在AS的Terminal中输入gradlew :Permission:uploadArchives,这个Permission就是我的module名字,这个uploadArchives,就是刚刚在build里面配置的,按回车运行,对了,这个module不能混淆,不然最后aar里面的class.jar包为空
但,居然给我报这个错误
Could not resolve com.android.tools.build:gradle:3.0.1.
我把整个项目生成apk都没抱这个错误,现在居然给我报这个,没办法,在根目录的build的里面加一句
maven{
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
心想这下应该没问题了,继续gradlew :Permission:uploadArchives
果然,程序继续往下编译,还下载了一些东西,看来马上要搞定了,
不出所料,又出新问题了,这次报的是
Could not find tools.jar. Please check that C:\Program Files\Java\jre1.8.0_121 contains a valid JDK installation.
我不是安装配置了jdk了么,怎么找不到了??
没办法,在根目录下的gradle.properties 里面 加了一句话
org.gradle.java.home=E:\\AndroidStudio\\jdk
这个E:\\AndroidStudio\\jdk 就是本地安装jdk的地址,
继续gradlew :Permission:uploadArchives
这次没报错了 终于出现了successful了
打开最开始新建的文件夹,
可以看到 已经生成了maven文件,在1.0.0里面还有aar文件
最后,再把这个文件夹上传到GitHub上去
https://github.com/shenmiliang/Permission
拷贝下来,在你需要使用这个moudle的项目中,在他的根目录里加入
maven {
url "https://raw.githubusercontent.com/shenmiliang/Permission/master"
}
这个https://raw.githubusercontent.com/shenmiliang/Permission/master ,就是刚刚拷贝的链接,把github.com替换成raw.githubusercontent.com,最后面加上/master ,/master代表分支,有别的分支,你也可以换上
接着,在具体引用工程gradle文件加入
implementation 'com.github.hl:permission:1.0.0'
这个com.github.hl:permission:1.0.0 就是刚前面配置的那个,也可以使用com.github.hl:permission:+@aar,+@aar代表一直使用最新版本
搞定!运行
在测试的时候,有些module写错了,更新后上传后,居然还是用错误的,这是因为本地有了缓存,在
C:\Users\lynnhuang\.gradle\caches\transforms-1\files-1.1 本地的这个地址下删除后,结果再次运行还是原来的demo,还需要在本地的这两个地址下删除
C:\Users\lynnhuang\.gradle\caches\modules-2\files-2.1
跟
C:\Users\lynnhuang\.gradle\caches\modules-2\metadata-2.23\descriptors
(这三个地方,第一个显示的事module名,第二个跟第三个显示的是包名)