作者:猿圆猿
链接:http://www.jianshu.com/p/8d7d0cc8fcc3
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
需求说明:
项目中使用了一些第三方,但是有些第三方的产品不是很符合项目需求,需要在其基础上稍加修改.
- 以前的办法
自己新建一个项目,将第三方源码拷贝过来,修改成自己想要的,
然后发布到jcenter上面去 ,
在项目中引用自己发布的地址. - 现在的办法
直接从github拷贝项目,修改代码后,
发布到本地maven仓库,
项目中引用本地maven仓库中的地址
比之前的方法简单
第一步
新建一个Android项目。在根目录下gradle.properties中添加一下信息
#包信息 需要修改成你的
GROUP_ID = com.kcode.github.pubutils
# Licence信息 基本是固定的
PROJ_LICENCE_NAME=The Apache Software License, Version 2.0
PROJ_LICENCE_URL=http://www.apache.org/licenses/LICENSE-2.0.txt
PROJ_LICENCE_DEST=repo
第二步
创建一个Libary,我命名为AndroidLib
在AndroidLib的根目录下新建gradle.properties文件,添加
#包信息
ARTIFACTID = androidLib
LIBRARY_VERSION = 0.0.2
#Mac下地址:file:///Users/<username>/my/local/repo
#Ubuntu下地址:file:///home/<username>/.m2/repository/
LOCAL_REPO_URL=file:///home/lv/.m2/repository/
第三步
在Library也就是刚才创建的AndroidLib下的gradle.build中添加
apply plugin: 'maven'
uploadArchives{
repositories.mavenDeployer{
repository(url:LOCAL_REPO_URL)
pom.groupId = GROUP_ID
pom.artifactId = ARTIFACTID
pom.version = LIBRARY_VERSION
}
}
第四步
最后在项目路径下执行:
./gradlew -p androidlib clean build uploadArchives --info
LOCAL_REPO_URL=file:///home/lv/.m2/repository/
路径下就可以看到已经发布好的本次仓库
其中可能会报错
我遇到两个
其一 是在AndroidLib 的build.gradle
中的android 节点下添加
lintOptions {
abortOnError false
}
其二 是在项目根目录下的build.gradle中buildscript和allprojects节点下分别添加
repositories {
maven { url "https://jitpack.io" }
jcenter()
google()
}
第五步
在其他项目中引用,先在最外层的gradle.build中添加本地maven库路径
buildscript {
repositories {
//多个maven库 优先级按顺序查找 我这里优先本地maven库
maven {
url 'file:///home/lv/.m2/repository/'
}
maven { url "https://jitpack.io" }
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0-beta7'
}
}
allprojects {
repositories {
//多个maven库 优先级按顺序查找 我这里优先本地maven库
maven {
url 'file:///home/lv/.m2/repository/'
}
maven { url "https://jitpack.io" }
jcenter()
google()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
就是:
maven {
url 'file:///home/lv/.m2/repository/'
}
然后在需要引用这个库的项目的gradle.build中添加:
compile ‘com.kcode.github.pubutils:androidLib:0.0.1’
就可以了。