使用Android Studio开发以后,有一项特别便利的功能就是添加依赖库只需要在gradle中添加一句代码就可以了:
dependencies {
compile 'com.android.support:appcompat-v7:23.2.1'
}
一直都想知道如何创建一个库来这样使用,后来因为工作需要,要把项目中所使用的一些常用框架和工具类封装起来,统一化使用。所以上网查了下,可以利用Bitbucket来创建免费的maven私有库,这里主要是搬运一下别人的文章,稍微翻译和总结一下方法。
主要参考了以下的文章
这篇文章已经很详细的介绍了如何利用Bitbucket创建私有maven库的过程。在maven库创建成功并上传了之后,在Bitbucket对应项目设置对哪些成员开放,在项目中通过在gradle中添加对应的maven url和用户名密码进行验证使用依赖库,这样就达到了仓库私有化的目的。
简单来说,有以下步骤:(图片均来源于以上参考的文章)
- 在Bitbucket上面新建一个私有的仓库
- 创建一个
README.md
文件,并把它上传到一个新分支(文中所说的是新建了一个叫releases
的新分支,其实新建一个分支,名字随你定就好,这是关键的一步,后面会试用到) - 创建一个gradle脚本文件,用来把库上传到Bitbucket。这里会用到一个叫Wagon-git的Maven 插件,这个gradle脚本文件在上面那个网站最后已经给了出来,在原文作者的github里面,可点击这里查看,直接把文件下载下来,放到你要上传的库的根目录下面,然后在要上传的库(
module
)的build.gradle
的最上面添加
apply from: 'xxx.gradle' //xxx是你下载下来那个文件名
//apply from: 'https://raw.githubusercontent.com/JeroenMols/GitAsMaven/master/publish-bitbucket.gradle'
//也可以不用下载文件,直接添加上面注释的的这一句
如果是使用原文作者的那个gradle脚本,要在library的根目录下面创建一个gradle.properties
的文件来定义那个gradle脚本的变量:
ARTIFACT_VERSION=<版本号>
ARTIFACT_NAME=<library的名字>
ARTIFACT_PACKAGE=<packagename> ARTIFACT_PACKAGING=aar //或者 jar,这个用哪个自己查
COMPANY=<bitbucket的团队名或者你的用户名>
REPOSITORY_NAME=<步骤1创建的私有仓库的名字>
然后在项目( project
)的根目录下面新建一个 gradle.properties
文件,用来填写你Bitbucket的用户名和密码:注意,这个文件千万别上传到版本管理那里去了,要添加在 .gitignore
中
USERNAME=<username_here>
PASSWORD=<password_here>
这样可以使用那个gradle脚本文件了。
我就是在这一步被困住了,因为我按照文中的方法去上传,但是Bitbucket的仓库一直没有签入记录,在Android Studio中Terminal中显示BUILD SUCCESSFUL的,后来在这个stackoverflow的回答中找到了答案,大意就是wagon-git这个插件是用SSH来连接Bitbucket的,所以要在本地和Bitbucket中设置好SSH,这里是设置方法,没什么难度的,按照步骤走下去就OK,记得把key贴到Bitbucket上面就可以了。然后在Terminal中重新运行
./gradlew uploadArchives
如无意外的话,去Bitbucket查看分支(步骤2中你所创建的分支)的commit记录就看到了你上传的库了,就像下图一样
- 上传成功之后,就可以在项目中使用了。在project的
build.gradle
中添加已上传的maven信息:
allprojects {
repositories {
jcenter()
maven {
url "https://api.bitbucket.org/1.0/repositories/用户名或团队名/仓库名/raw/分支名"
credentials {
username USERNAME
password PASSWORD
}
}
}
}
然后在 module
的 build.gradle
像之前那样添加依赖那样引用就OK了:
dependencies {
//...
// GROUP-ID = ARTIFACT_PACKAGE
// ARTIFACT-ID = ARTIFACT_NAME
// VERSION = ARTIFACT_VERSION
compile 'GROUP-ID:ARTIFACT-ID:VERSION'//这个按照步骤3中定义的填补吧
}
认真看看上文作者的gradle脚本的代码,有些地方还是挺好理解的。在走这个步骤的过程中,除了遇到SSH那个问题坑了我较长时间之外,总的来说步骤也不复杂。
完成…
这个方法是在查到SSH问题那里发现了,里面使用的gradle脚本跟上面第一篇大同小异,文中也有对应github地址可以查看gradle文件,可以作为参考。