发布Android库到GitHub Packages
March 09, 2020
GitHub推出了自己的包管理服务,目前开源项目免费使用,提供npm、gem、mvn、gradle、docker、dotnet,更多信息可以在这里找到 About GitHub Packages
Part 1 - 发布
Step 1 - 生成 GitHub Personal Access Token
- 在你的 GitHub 账户里
- 进入 Settings -> Developer Settings -> Personal Access Tokens -> Generate new token
- 勾选
write:packages和read:packages生成一个 Token
- 生成 Token 后记得复制保存,该 Token 只显示在这一次,之后只能重新生成新的 Token
Step 2 - 配置 Token 到你的项目
- 在你的项目根目录新建一个
.properties文件,比如github.properties - 添加两个属性
gpr.usr=GITHUB_USERIDgpr.key=PERSONAL_ACCESS_TOKEN GITHUB_USERID替换成你的 GitHub 账户 Id,PERSONAL_ACCESS_TOKEN替换成 Step 1 生成的 Token- 如果你的项目是开源项目,记得将
.properties文件添加到.gitignore,以免泄露 Token
你也可以通过环境变量来传入
GPR_USER和GPR_API_KEY,就不需要.properties文件
Step 3 - 更新 library module 的 build.gradle
- 将下方代码添加到 library module 的 build.gradle 文件
apply plugin: 'maven-publish' // 添加到library build.gradle的最上面
def githubProperties = new Properties()
githubProperties.load(new FileInputStream(rootProject.file("github.properties")))
def getVersionName = { ->
return "1.0.2" // 仓库版本
}
def getArtificatId = { ->
return "sampleAndroidLib" // 仓库Id
}
publishing {
publications {
bar(MavenPublication) {
groupId 'com.enefce.libraries' // 仓库组Id
artifactId getArtificatId()
version getVersionName()
artifact("$buildDir/outputs/aar/${getArtificatId()}-release.aar")
}
}
repositories {
maven {
name = "GitHubPackages"
/** Configure path of your package repository on Github
** GITHUB_USERID替换成你的GitHub账户Id
** REPOSITORY替换成你的项目名称
*/
url = uri("https://maven.pkg.github.com/GITHUB_USERID/REPOSITORY")
credentials {
/** Create github.properties in root project folder file with
** gpr.usr=GITHUB_USER_ID & gpr.key=PERSONAL_ACCESS_TOKEN
** Set env variable GPR_USER & GPR_API_KEY if not adding a properties file**/
username = githubProperties['gpr.usr'] ?: System.getenv("GPR_USER")
password = githubProperties['gpr.key'] ?: System.getenv("GPR_API_KEY")
}
}
}
}Step 4 - 执行发布
在执行发布之前需要确保编译过,也就是
build命令,并能在build/outputs/aar/路径找到编译后的 aar 文件
- 在你的 library module 任务下找到
publishing/publish并执行,或者直接命令行
$ gradle publish注意:
Part 2 - 安装
如果是私有项目还需要生成一个
read:packages的 Token,生成步骤见 Part 1
Step 1 - 更新项目的根 build.gradle
- 将下方代码添加到根 build.gradle 文件
allprojects {
repositories {
maven {
name = "GitHubPackages"
/**
** GITHUB_USERID替换成刚才发布包的GitHub账号Id
** REPOSITORY替换成刚才发布包的项目名称
*/
url = uri("https://maven.pkg.github.com/GITHUB_USERID/REPOSITORY")
}
}
}- 添加依赖到 app.module 文件
dependencies {
implementation 'com.example:package'
}- 同步
Part 3 - 便携发布
apply from: 'https://raw.githubusercontent.com/izyhang/GitHub-Packages-Publish/master/publish.gradle'— Evil Mouth