-
2020-10-17 02:56:28
JitPack
一 介绍
1.1 JitPack是干嘛的?
JitPack用来管理项目。为了在JitPack上发布您的库,您只需要在Git存储库中使用一个有效的构建文件。
JitPack当前可以构建Gradle,Maven,Sbt和Leiningen项目。让我们知道是否要与其他构建工具一起使用。具体使用可以查看官网。
流程极度简化,只需要输入Github项目地址就可发布项目,大大方便了像我这种懒得配置环境的人。
1.2 有何不同?
那么这和 Maven Central,JCenter 有何不同呢?最大的区别就在于你不必完成 Maven Central 的一系列注册手续,乃至发布一个库之前的登记 Post 和等待管理员批准,也不必在 JCenter 上填写冗长的标签,找图做图做图标写说明,更不必每到发布时做一系列的准备工作,使用专用的工具完成最后一击。你只需要写好你的 GitHub Repo README就行了,其他的事情,JitPack 会全数包办。所以很明显,发布一个公开的第三方库前所未有地简便。
除了支持 GitHub 上的公开 Repository 的自动发布之外,JitPack 也支持 Bucket,GitLab,Gitee 账户中的公开库的发布。
1.3 使用 JitPack
我们没有私服呢,又或者我们的异地伙伴呢,而我们也没有公网上的 Maven 私服呢?又或者,如果我觉得这个代码库具有通用性,我希望让任何感兴趣的人都能够使用它呢?这些情况下,我们只能考虑 Maven Central,JCenter 那样的公共 Maven Repository Servers 了,特别是针对 Android 开发的情况,JCenter 是首选的推荐。所以前文我们已经提到过了,当你的技能水平和开发经验推进到一定水平时,你就会面临这样的选择。而且你幸运的是,现在你不必要那么麻烦了,JitPack.io 可以更好地为你的设想进行变现。
当你的开源库变得越来越受欢迎时,你不能使用 JitPack
方式发布它,因为那时候你会发现更多新的需求,你会需要更好地规划版本推进路线图,解决全球各地使用者的依赖、补丁修复等各类型的新问题,也为使用者们释疑和提供可信度,那时候你需要更严谨的登记自己的开源库到
JCenter 并采取更稳定更可信赖的方式来发布代码库。那将会是另一篇文章了。1.3.1 配置你的gradle
这时候,你的 gradle 脚本中可能是像这样子声明引用的:
allprojects { repositories { jcenter() google() maven { url "https://jitpack.io" } } } dependencies { implementation 'com.github.Username:my-library:Tag' }
在这里,Username 是你的 GitHub 账户登录名。而 my-library 是你的 Repository 的名字。换句话说,你的库被放在 github.com/Username/my… 处可以被浏览器访问。
1.3.2 引用 Snapshots
在开发过程中,Snapshots 版本是非常有用的。你可以这样指定版本号来引用snapshots:
- commit hash
- branch-SNAPSHOT (替换 branch 为你的分支名)
例如:
// dependency on the latest commit in the master branch implementation 'com.github.jitpack:gradle-simple:master-SNAPSHOT' // dependency on the latest commit in the devel branch implementation 'com.github.jitpack:gradle-simple:devel-SNAPSHOT' // dependency on the certain a commit 33e0c37ee8 implementation 'com.github.jitpack:gradle-simple:33e0c37ee8'
1.3.3 刷新缓存
注意 Gradle 会缓存SNAPSHOT内容,所以有时候你可能无法获取某个分支上的最新 build。Gradle 自身也提供的方法来控制这一点。你可以在 build.gradle 中要求 Gradle 总是拉取最新的 build 版本:
configurations.all { resolutionStrategy.cacheChangingModulesFor 0, 'seconds' }
你也可以通过命令行添加 --refresh-dependencies 来要求一次 gradle build 中额外地废除 cache 内容并从远程拉取最新的 build 版本。
使用 Android Studio 时,如果你刷新了 gradle cache,那么你可能也需要在 AS 中通过 File ->
Synchronize 菜单来更新和同步 gradle 各种依赖状态。1.3.4 引用 Release
通过 JitPack 来发布开源库,而不是使用你的库的 Snapshots 版本,也是超级容易的。当然,你需要具备 GitHub Release 的相关知识。
本质上说,GitHub 的 Release 和 git 的 tag 没有什么不同,只是在 tag 名称上略有要求。你可以在GitHub 上通过 Web 界面建立 pre-release 和 release,但你也可以直接通过本机的命令行或者 IDE 或者 Git Client 来建立 release 标签。无论如何,对于这些标签的命名的这些要求,通常也符合软件团队的发布策略:git tag 0.17.2 git tag v0.17.3 git tag release-0.1.1 git tag release/v0.13.3
不同的团队可能采取不同的 CI 策略以及 Release 命名策略。
较为简明的方式是 0.17.2,它便于手工管理且视觉上明确无歧义。
采用自动化 CI 的团队可能会使用 v0.17.3 和 release/v0.13.3,前者利用前缀触发 CI builder Rules,而后者则在兼顾触发规则的同时,提供一个可视化层面的更好的组织形式:当你通过多数 Git 客户端审查代码时,所有的 releases tags 会被组织为 release/ 之下的一组节点——类似地,往往同时也会使用诸如 hotfix/v0.13.3-h101,rc/v2,beta/1 等 tags 来组织和管理其他情形的版本。
当然,tag 的命名是全自由度的。你可以在无论是 git,git client,github,jitpack 等各种不同场合使用像 temporary-rel-1 或者 fxx-123-kk 这样的 tag 名称,毫无障碍地。可以通过 Gradle 插件来帮助你管理你的 Git/GitHub 版本号:
Gradle release & version management plugin
如果你尚未有任何关于如何进行 Git Tag 命名的概念的话。
一旦通过 git 命令或者任何方式建立了一个 git tag,那就代表着你建立了一个 Release,无论其名称多么狗屎都可以。那么一旦你推送这个 tag 到 GitHub 之后,例如 fxx-123-kk,任何人就可以在项目中这样引用它:
repositories { jcenter() maven { url "https://jitpack.io" } } dependencies { implementation 'com.github.yourname:your-repo:fxx-123-kk' }
1.3.5 发布 JavaDoc
如果你的库的构建脚本能够产出 javadoc jar 包,那么 JitPack 将会自动处理 javadoc 的生成以及发布。你可以直接在这里浏览:
- https://jitpack.io/com/github/USER/REPO/VERSION/javadoc/ or
- https://jitpack.io/com/github/USER/REPO/latest/javadoc/ (latest
release tag)
对于一个多 Module 的项目来说,它的 Maven 发布点使用 com.github.USER.REPO:MODULE:VERSION 这样的 Artifact。因此,相应的 JavaDoc 位置在:
- https://jitpack.io/com/github/USER/REPO/MODULE/VERSION/javadoc/
Source codes jar 包会被 JitPack 自动处理,你无需额外提供处理依据或编排。
一个简短的 Module-level build.gradle 样本如下:
apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'com.github.dcendents.android-maven' repositories { mavenCentral() google() jcenter() maven { url "https://jitpack.io" } } group = 'com.github.jitpack' version = '1.0' android { compileSdkVersion 28 buildToolsVersion "28.0.2" defaultConfig { minSdkVersion 16 targetSdkVersion 28 versionCode 1 versionName version testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions { abortOnError false } sourceSets { main.java.srcDirs += 'src/main/kotlin' androidTest.java.srcDirs += 'src/androidTest/kotlin' androidTest.resources.srcDirs += 'src/androidTest/res' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.android.support:appcompat-v7:28.0.0-rc01' implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" } task sourcesJar(type: Jar) { classifier = 'sources' from android.sourceSets.main.java.sourceFiles } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.sourceFiles classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } task classesJar(type: Jar) { from "$buildDir/intermediates/classes/release" } artifacts { archives classesJar archives javadocJar archives sourcesJar }
1.3.6 其他特性
- 支持私有 Repositories。 你只需要提供一个授权给予 jitpack.io
并微调一下开发机环境就可以了,其他的部分和前文述及的用法没有区别。具体的步骤可以参考:jitpack.io/private。不过,你想要通过
JitPack 发布私有repo的话,是收费的,按月订阅制。 - 支持动态版本号。
所以你可以使用 ‘1.+’ 这样的版本号。
3. 可以使用自己的域名作为groupId。这个需要更高价位的订阅级别。
4. 一般情况下 jitpack
按照构建顺序存储你的若干个库版本,但并不确保这些构建后的版本总是存在。就是说,直到用户向服务器发起了拉取一个库的请求的时候,jitpack按需就地构建请求的版本而不是提前构建好之后等待用户发起请求。这意味着首位用户的首次请求通常是失败的,他需要等待构建完成后再次发布请求时才能完成pom和库包的下载。通常,一个 jitpack 构建完成的版本至少会维持 7 天不变。
多数时候,我们并不真的介意有时候会拉取失败的问题,尤其是有一次成功后本地.m2也会有一份缓存的情况。你可以登录 JitPack.io
之后在 对应库的构建列表中点击 “Get It” 按钮来明确地发出构建请求而不是由使用者发起。1.3.7 自定义域名
- 默认时,你的库的 groupId 为 com.github.USER 或者
com.github.yourORGANIZATION。但你也可以使用自己的域名前缀,例如 com.hedzr 或者
com.hedzr.lib。为了使用自己的域名前缀作为 groupId,应该遵循以下的步骤: 添加一条 DNS TXT 记录,以完成从
git.yourcompany.com 到 github.com/yourcomany。另外一种情形是:从
lib.yourdomain.com 映射到
github.com/USER。你需要在自己的域名托管商提供的DNS记录修改工具中完成这样的操作,可以参考 How to add a TXT record。 - 然后请前往 jitpack.io/#com.yourco… 并点击 Look up 按钮,确定映射已经生效。
为了检测TXT记录已经生效,可以执行命令行:
dig TXT git.yourcompany.com
例如:
~$ dig txt git.jitpack.io ... ;; ANSWER SECTION: git.jitpack.io. 600 IN TXT "https://github.com/jitpack"
1.3.8 支持的代码库网站
GitHub
GitLab
BitBucket
Gitee
1.3.9 角标 Badges
在你的项目的 README.md 中添加相应的角标的方法是:
[](https://jitpack.io/#User/Repo)
也可以使用非圆角的样式:
[](https://jitpack.io/#jitpack/maven-simple)
当你使用自定义域名或者 BitBucket 时,可以这样:
[](https://jitpack.io/#com.example/Repo) [](https://jitpack.io/#org.bitbucket.User/Repo)
1.3.10 你是库使用者
你需要的引用方式是在 Module-level build.gradle 中添加:
dependencies { implementation 'com.github.Username:my-library:Tag' }
你应该在 Top-level build.gradle 中添加 jitopack 的 Maven 仓库:
allprojects { repositories { jcenter() google() maven { url "https://jitpack.io" } } }
1.3.11 后记
关于 JitPack 的 API:
这给予我们 ChatOps 回调能力或者 CI 控制能力,或者其他——取决于你的想象力。
由于 API 设计的非常简单,因此不必另文专述。有需要者不妨直达:
jitpack.io/docs/API/更多相关内容 -
Android发布项目到jitpack的完整步骤
2021-01-04 05:32:122、配置JitPack相关的配置信息; 3、排查自己工具类中的错误并上传到github; 4、创建release并在JitPack中编译; 5、在自己的项目中引用。 其次 1、 创建一个libiary,然后上传到github(只需要上传图中红色... -
jitpack.io:https:jitpack.io的文档和问题
2021-01-28 13:01:04jitpack.io:https:jitpack.io的文档和问题 -
What:组件化项目,Arouter,JitPack,MVVM
2021-03-28 12:41:25主要使用了JitPack,ARouter,RxJava2,Retrofit2等主流框架,MVVM模式 主工程运行,业务模块独立运行 各模块相互促进,通信等 功能(按功能打包),业务(按层打包)分离解变量 SpringMVC模式开发接口 框架和工具 ... -
autojitpack:每次发布后都向jitpack发送请求,因为我太懒了,无法单击两个按钮
2021-05-23 08:54:06自动包装每次发行后自动向JitPack发送请求,以免造成麻烦 name : releaseon : push : tags : " * "jobs : build : runs-on : ubuntu-latest steps : - uses : actions/checkout@v2 - uses : actions/setup-java@v1 ... -
zxing:扫描二维码libs,用于使用JitPack发布开源库
2021-03-23 12:05:58兴兴扫描二维码libs,用于使用JitPack发布开源库使用方式第1步:添加JitPack库来生成文件在你的根的build.gradle添加在库的结尾: allprojects {repositories {...maven { url "https://jitpack.io" }}}第2步:添加... -
JitPack.io 基本使用法
2021-06-05 04:15:24JitPack.io 是一个 GitHub 开源代码库的便捷发布渠道。它可以让你的 Android/Java 代码库自动完成发布,从而令使用者能够最便利地享受到你的代码库。本质上说,一切能够通过 Maven Repository 发布的代码库,你都...JitPack.io 是一个 GitHub 开源代码库的便捷发布渠道。它可以让你的 Android/Java 代码库自动完成发布,从而令使用者能够最便利地享受到你的代码库。
本质上说,一切能够通过 Maven Repository 发布的代码库,你都可以借助 JitPack 的自动打包和发布功能,从 GitHub 上发布给大众使用。例如你的 Kotlin/Java 代码库,SpringBoot 工具库,Android 三方库,等等,一旦你发布了源代码到 GitHub,并完成了提交、Release标签动作,那么 JitPack 上将会自动生成一个相应的符合 Maven 包引用规则的 ID:com.github.your-github-username:your-github-reponame:release-tag。在这里,Maven Group Name 即 com.github.your-github-username,Maven Artifact Name 即 your-github-repo-name。这样的 Maven ID,三方库使用者能够通过 POM 或 gradle 引用到它。
那么这和 Maven Central,JCenter 有何不同呢?最大的区别就在于你不必完成 Maven Central 的一系列注册手续,乃至发布一个库之前的登记 Post 和等待管理员批准,也不必在 JCenter 上填写冗长的标签,找图做图做图标写说明,更不必每到发布时做一系列的准备工作,使用专用的工具完成最后一击。你只需要写好你的 GitHub Repo README就行了,其他的事情,JitPack 会全数包办。
所以很明显,发布一个公开的第三方库前所未有地简便。
当然,这一切大体上限定在 Java 及其衍生领域,例如 Android。而诸如 Python,Nodes 等就没法
除了支持 GitHub 上的公开 Repository 的自动发布之外,JitPack 也支持 Bucket,GitLab,Gitee 账户中的公开库的发布。
JitPack is a novel package repository for JVM and Android projects. It builds Git projects on demand and provides you with ready-to-use artifacts (jar, aar).
那么,这里会讲讲利用 JitPack.io 的方法。为了讲述方便,下面会主要使用 Android Library 作为讲解的例子。
你是库开发者
假定你是一个Android开发者,手头有一堆代码行之有效,而且厌倦了每次在各个 Projects 之间拷贝来拷贝去,那么你就建立了一个独立的 Android Library 项目,将这些代码打包在一起。这时,问题来了,别的工程怎么引用这个库呢?
Android使用一个库,有很多种方法。
没有 JitPack
你可以将 Library Module 嵌入到目标项目中,然后通过
dependencies {
implements ':my-library'
}
来引用它。
这很蠢,但最简单。所以我们会将库独立建立一个工程 my-library,然后通过 gradle 命令构建它,从而得到一个 .aar 文件,然后我们可以复制这个 .aar 文件到目标项目中的 app/libs/ 之中,利用:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
}
来引用它。
这就方便多了,不过如果修订了 my-library 的话,我们需要复制那个 .aar 到每个引用它的目标项目中,如果我们引用了5次,甚至我的团队伙伴们引用了它时,那么灾难还是会发生。
所以我们可以用过 gradle deploy 指令将 .aar 发布到 $HOME/.m2/repositories/ 之中,然后通过 Maven Artifact ID方式引用它。如果我的团队伙伴们也需要引用它,那么我发布到 Maven 私服上,就解决问题了。这时候通常是这样的:
allprojects {
repositories {
jcenter()
google()
mavenCentral()
mavenLocal()
maven { url "https://maven.our-nexus.com" }
}
}
dependencies {
implementation 'com.example.android:my-library:1.0.1'
}
使用 JitPack
那么新问题还是不可避免地来了,我们没有私服呢,又或者我们的异地伙伴呢,而我们也没有公网上的 Maven 私服呢?又或者,如果我觉得这个代码库具有通用性,我希望让任何感兴趣的人都能够使用它呢?这些情况下,我们只能考虑 Maven Central,JCenter 那样的公共 Maven Repository Servers 了,特别是针对 Android 开发的情况,JCenter 是首选的推荐。所以前文我们已经提到过了,当你的技能水平和开发经验推进到一定水平时,你就会面临这样的选择。而且你幸运的是,现在你不必要那么麻烦了,JitPack.io 可以更好地为你的设想进行变现。
这时候,你的 gradle 脚本中可能是像这样子声明引用的:
allprojects {
repositories {
jcenter()
google()
maven { url "https://jitpack.io" }
}
}
dependencies {
implementation 'com.github.Username:my-library:Tag'
}
在这里,Username 是你的 GitHub 账户登录名。而 my-library 是你的 Repository 的名字。换句话说,你的库被放在 https://github.com/Username/m... 处可以被浏览器访问。
当你的开源库变得越来越受欢迎时,你不能使用 JitPack 方式发布它,因为那时候你会发现更多新的需求,你会需要更好地规划版本推进路线图,解决全球各地使用者的依赖、补丁修复等各类型的新问题,也为使用者们释疑和提供可信度,那时候你需要更严谨的登记自己的开源库到 JCenter 并采取更稳定更可信赖的方式来发布代码库。那将会是另一篇文章了。
按照 JitPack 的官方说明,Tag 是这样的:Tag 可以是 Release 标签,commit hash,分支名加上 -SNAPSHOT 后缀等等。
引用 Snapshots
在开发过程中,Snapshots 版本是非常有用的。你可以这样指定版本号来引用 repo 的 snapshots:
commit hash
branch-SNAPSHOT (替换 branch 为你的分支名)
例如:
// dependency on the latest commit in the master branch
implementation 'com.github.jitpack:gradle-simple:master-SNAPSHOT'
// dependency on the latest commit in the devel branch
implementation 'com.github.jitpack:gradle-simple:devel-SNAPSHOT'
// dependency on the certain a commit 33e0c37ee8
implementation 'com.github.jitpack:gradle-simple:33e0c37ee8'
刷新缓存
注意 Gradle 会缓存SNAPSHOT内容,所以有时候你可能无法获取某个分支上的最新 build。Gradle 自身也提供的方法来控制这一点。你可以在 build.gradle 中要求 Gradle 总是拉取最新的 build 版本:
configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
你也可以通过命令行添加 --refresh-dependencies 来要求一次 gradle build 中额外地废除 cache 内容并从远程拉取最新的 build 版本。Gradle documentation 提供了更多的关于控制缓存的相关信息。
使用 Android Studio 时,如果你刷新了 gradle cache,那么你可能也需要在 AS 中通过 File -> Synchronize 菜单来更新和同步 gradle 各种依赖状态。
对于在你的开源库中提供多个 Modules 的情况,JitPack 也提供了相应的支持:https://jitpack.io/docs/BUILD...。不过我们并不建议你这么去做。
引用 Release
通过 JitPack 来发布开源库,而不是使用你的库的 Snapshots 版本,也是超级容易的。当然,你需要具备 GitHub Release 的相关知识。
本质上说,GitHub 的 Release 和 git 的 tag 没有什么不同,只是在 tag 名称上略有要求。你可以在GitHub 上通过 Web 界面建立 pre-release 和 release,但你也可以直接通过本机的命令行或者 IDE 或者 Git Client 来建立 release 标签。无论如何,对于这些标签的命名的这些要求,通常也符合软件团队的发布策略:
git tag 0.17.2
git tag v0.17.3
git tag release-0.1.1
git tag release/v0.13.3
不同的团队可能采取不同的 CI 策略以及 Release 命名策略。
较为简明的方式是 0.17.2,它便于手工管理且视觉上明确无歧义。
采用自动化 CI 的团队可能会使用 v0.17.3 和 release/v0.13.3,前者利用前缀触发 CI builder Rules,而后者则在兼顾触发规则的同时,提供一个可视化层面的更好的组织形式:当你通过多数 Git 客户端审查代码时,所有的 releases tags 会被组织为 release/ 之下的一组节点——类似地,往往同时也会使用诸如 hotfix/v0.13.3-h101,rc/v2,beta/1 等 tags 来组织和管理其他情形的版本。
当然,tag 的命名是全自由度的。你可以在无论是 git,git client,github,jitpack 等各种不同场合使用像 temporary-rel-1 或者 fxx-123-kk 这样的 tag 名称,毫无障碍地。
可以通过 Gradle 插件来帮助你管理你的 Git/GitHub 版本号:
如果你尚未有任何关于如何进行 Git Tag 命名的概念的话。
一旦通过 git 命令或者任何方式建立了一个 git tag,那就代表着你建立了一个 Release,无论其名称多么狗屎都可以。那么一旦你推送这个 tag 到 GitHub 之后,例如 fxx-123-kk,任何人就可以在项目中这样引用它:
repositories {
jcenter()
maven { url "https://jitpack.io" }
}
dependencies {
implementation 'com.github.yourname:your-repo:fxx-123-kk'
}
这就是全部了。
发布 JavaDoc
如果你的库的构建脚本能够产出 javadoc jar 包,那么 JitPack 将会自动处理 javadoc 的生成以及发布。你可以直接在这里浏览:
https://jitpack.io/com/github/USER/REPO/VERSION/javadoc/ or
https://jitpack.io/com/github/USER/REPO/latest/javadoc/ (latest release tag)
对于一个多 Module 的项目来说,它的 Maven 发布点使用 com.github.USER.REPO:MODULE:VERSION 这样的 Artifact。因此,相应的 JavaDoc 位置在:
https://jitpack.io/com/github/USER/REPO/MODULE/VERSION/javadoc/
Source codes jar 包会被 JitPack 自动处理,你无需额外提供处理依据或编排。
一个简短的 Module-level build.gradle 样本如下:
apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'
apply plugin: 'com.github.dcendents.android-maven'
repositories {
mavenCentral()
google()
jcenter()
maven { url "https://jitpack.io" }
}
group = 'com.github.jitpack'
version = '1.0'
android {
compileSdkVersion 28
buildToolsVersion "28.0.2"
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 1
versionName version
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
lintOptions {
abortOnError false
}
sourceSets {
main.java.srcDirs += 'src/main/kotlin'
androidTest.java.srcDirs += 'src/androidTest/kotlin'
androidTest.resources.srcDirs += 'src/androidTest/res'
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.sourceFiles
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
task classesJar(type: Jar) {
from "$buildDir/intermediates/classes/release"
}
artifacts {
archives classesJar
archives javadocJar
archives sourcesJar
}
其他特性
支持私有 Repositories。
你只需要提供一个授权给予 jitpack.io 并微调一下开发机环境就可以了,其他的部分和前文述及的用法没有区别。具体的步骤可以参考:https://jitpack.io/private。不过,你想要通过 JitPack 发布私有repo的话,是收费的,按月订阅制。
支持动态版本号。
所以你可以使用 '1.+' 这样的版本号。
可以使用自己的域名作为groupId。
这个需要更高价位的订阅级别。
不过对于 free 的 GitHub repo 来说,你也可以免费获得这个特性。稍后章节我们会提到这一点。
一般情况下 jitpack 按照构建顺序存储你的若干个库版本,但并不确保这些构建后的版本总是存在。就是说,直到用户向服务器发起了拉取一个库的请求的时候,jitpack按需就地构建请求的版本而不是提前构建好之后等待用户发起请求。这意味着首位用户的首次请求通常是失败的,他需要等待构建完成后再次发布请求时才能完成pom和库包的下载。
通常,一个 jitpack 构建完成的版本至少会维持 7 天不变。
多数时候,我们并不真的介意有时候会拉取失败的问题,尤其是有一次成功后本地.m2也会有一份缓存的情况。你可以登录 JitPack.io 之后在 对应库的构建列表中点击 “Get It” 按钮来明确地发出构建请求而不是由使用者发起。
自定义域名
默认时,你的库的 groupId 为 com.github.USER 或者 com.github.yourORGANIZATION。但你也可以使用自己的域名前缀,例如 com.hedzr 或者 com.hedzr.lib。为了使用自己的域名前缀作为 groupId,应该遵循以下的步骤:
添加一条 DNS TXT 记录,以完成从 git.yourcompany.com 到 https://github.com/yourcomany。另外一种情形是:从 lib.yourdomain.com 映射到 https://github.com/USER。你需要在自己的域名托管商提供的DNS记录修改工具中完成这样的操作,可以参考 How to add a TXT record。
为了检测TXT记录已经生效,可以执行命令行:
dig TXT git.yourcompany.com
例如:
~$ dig txt git.jitpack.io
...
;; ANSWER SECTION:
git.jitpack.io. 600 IN TXT "https://github.com/jitpack"
支持的代码库网站
GitHub
GitLab
BitBucket
Gitee
角标 Badges
在你的项目的 README.md 中添加相应的角标的方法是:
[](https://jitpack.io/#User/Repo)
也可以使用非圆角的样式:
[](https://jitpack.io/#jitpack/maven-simple)
当你使用自定义域名或者 BitBucket 时,可以这样:
[](https://jitpack.io/#com.example/Repo)
[](https://jitpack.io/#org.bitbucket.User/Repo)
你是库使用者
你需要的引用方式是在 Module-level build.gradle 中添加:
dependencies {
implementation 'com.github.Username:my-library:Tag'
}
你应该在 Top-level build.gradle 中添加 jitopack 的 Maven 仓库:
allprojects {
repositories {
jcenter()
google()
maven { url "https://jitpack.io" }
}
}
详细的解释,请阅读库开发者相关章节内容。
后记
关于 JitPack 的 API
这给予我们 ChatOps 回调能力或者 CI 控制能力,或者其他——取决于你的想象力。
由于 API 设计的非常简单,因此不必另文专述。有需要者不妨直达:
-
JitPack
2018-01-28 18:47:49发布新手的第一个开源库-快速发布开源库到JitPack 前言: 之前在JCenter上发布了个开源库,各种配置挺麻烦的,但折腾之后还是总算没出错成功弄好了,有兴趣的看一下顺手点个star:多达288种动态效果的侧滑菜单开源库,...发布新手的第一个开源库-快速发布开源库到JitPack
前言:
之前在JCenter上发布了个开源库,各种配置挺麻烦的,但折腾之后还是总算没出错成功弄好了,有兴趣的看一下顺手点个star:多达288种动态效果的侧滑菜单开源库,满足您项目的各种需求.但是准备弄第二个的时候虽然上传成功,后台也能看到文件了,但是添加依赖之后只有资源文件没有代码,很是郁闷.问了群里的大神之后大神推荐使用JitPack,研究了下确实挺简单的,就是配置的时候因为百度到的东西都是过时的,走了一点弯路,现在解决了顺便做个记录,防止再次踩坑.
关于将代码弄成开源库我这边是这样考虑的,如果做开发做个一段时间的同学都应该会有自己的
"快速开发框架"
,听起来高大上但我的意思是指自己平时收集的代码和写的base
等业务无关的代码,如果你还没有这样的东西,那你应该尝试着来做一下.这样在开发其他项目的时候以module
引入将会减少很多简单代码的书写.另外一点考虑是以开源库的形式使用module
在构建项目的时候是非常快的,而且如果以导module
的形式那一旦有更改就得重新导一遍.所以将自己"积攒"的代码做成一个库是一个很明智的选择,当然如果你的代码特别的好,分享给其他人用也是很好的.好了.废话就这么多,下面开始正题:JitPack官网地址:
[JitPack](https://jitpack.io/)
下面就新建一个测试开源库然后一步步演示如何发布并使用一个开源库
1.首先用
Android Studio
新建一个工程,添加要发布的module
这里说一点命名的问题,一般来说要分享一个
module
,会给module
起个简洁的名字,然后管理module
会起一个长一点的名字,比如module
叫Test
,项目名称叫TestDemo
,这样如果是上传JCenter完全没问题,引用的时候还是引用的Test,但是在JitPack上面就会变成要引用TestDemo
了,虽然内容是只有Test
的内容,但是看着很奇葩啊,所以大家注意把项目名称起好一点,module
随意.这一步结果如图:项目名叫
Test
,存放开源库内容的module
叫TestModule
(AS显示的时候是忽略大小写的)这里写图片描述2.书写开源库内容
这一步没啥说的,要开源什么就写什么呗.我这边就写个
BaseActivity
一会测试依赖是否成功.这一步结果如下:
这里写图片描述3.在项目的
build.gradle
内添加内容位置如下:
这里写图片描述添加一句
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
注意:这一步是添加
maven
的构建插件,后面的版本号要是最新的.因为我之前网上搜的都是1.3
,然后后面的步骤总是报错不成功,所以建议写最新的,查看最新版本去它的Github
上看:android-maven-gradle-plugin原本内容如下:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0-beta1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }
添加后的内容如下:
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.0-beta1' classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } }
添加之后会有提示让你
Sync
,按提示同步一下这里写图片描述4.在要开源的
module
的build.gradle
下添加内容位置如下:
这里写图片描述内容在头部添加,原本的内容是这样的
apply plugin: 'com.android.library' ...
添加后的是这样的
apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' group='com.github.Brioal' //Brioal替换成你自己的Github用户名 ...
现在又会出现提示
Sync
,再次同步如果没有出错的话本地的配置基本已经成功了
接下来要将这个项目放到
Github
上,这大家应该都会,但我还是演示下如何用AS
快速发布这里写图片描述如果AS还没配置过
Github
的话点击这个会让你设置Github
帐号,我这边已经用过所以直接验证密码就行这里写图片描述注:这些操作的前提是
Git
已经配置好了,如果Git
没有配置好这一步会出错,建议百度先把Git
搭建好上传成功之后会在
Github
上看到刚刚上传的项目这里写图片描述5.给项目添加一个
Tag
点击如图所示位置:
这里写图片描述显示没有
Tag
,然后点击新建这里写图片描述我这就随便填个
这里写图片描述点击下方的
Publish
即可完成创建,成功之后界面如下这里写图片描述现在我们的开源库已经可以被使用了,这时候应该获取使用的方式并添加到
readme
中打开
JitPack
主页,将你的项目的Gihub地址复制到这并点击look up
这里写图片描述如果前面没有问题的话现在可以看到我们之前写的
Tag
号,点击get
这里写图片描述会自动跳转到使用方式,如下:
这里写图片描述步骤已经很详细了,现在我就来新建个项目测试一下
直接跳过新建项目
1.第一步在项目的
build.gradle
下配置位置如下:
这里写图片描述allprojects { repositories { ... maven { url "https://jitpack.io" } } }
第二部,在
app
的build.gradle
下添加如下dependencies { ... compile 'com.github.Brioal:Test:1.0' ... }
会提示
Sync
,按提示同步一下测试依赖是否成功
这里写图片描述测试成功.完毕~~~
作者:Brioal
链接:https://www.jianshu.com/p/f1b2ad4c507a
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 -
你会在 JitPack 上创建依赖库吗?
2021-04-02 10:01:43为什么写 ...因为我之前就在 JitPack 上创建过依赖,有点经验,所以选择这个,至于JCenter ,可能大家也知道,直接看官网吧: 懂了吧。。。 为啥没选 Maven 呢。。。因为我没想到 JitPack 变得这么为什么写
看见标题有人可能会轻蔑一笑,多简单个事?还至于专门写一篇文章吗?
我之前也以为挺简单的,因为之前自己也上传过,但是前几天的经历告诉我没有那么简单,特别是现在安卓
Gradle
升级到 7.0 之后。。。还可能有人问为什么要在
JitPack
上创建呢?JCenter
、Maven
不香嘛?因为我之前就在
JitPack
上创建过依赖,有点经验,所以选择这个,至于JCenter
,可能大家也知道,直接看官网吧:
懂了吧。。。为啥没选
Maven
呢。。。因为我没想到JitPack
变得这么麻烦,本来是奔着简单才选的,如果再给我一次机会我一定不上传JitPack
了。。。好了,废话不多说,直接进入文章主题吧:流程
上传依赖到
JitPack
流程很简单,网上搜博客一搜一大堆,这里就不详细说了,我简单过一下吧:创建
Android Library
首先要创建一个
Android Library
,这其实是废话,你要上传的就是依赖不创建Android Library
创建啥?对不。。。然后在里面写好你需要作为依赖的代码,比如写一些工具类啊啥的,这个看自己的需要吧,就不做演示了。。。上传到
Github
代码写完了就该上传到
Github
了。什么?你没有Github
仓库?码云的也可以。什么?都没有?玩蛋去。。这里就假设你有
Github
了,然后在 as 中登录一下,按照图片下面的操作直接添加你的账号就行了:
添加完了之后按照下面图片中那样点击:
点击完之后会弹出下面的对话框:
注意不要勾选Private
,勾选了的话你上传的就成了私有的了。打
Release
包上传成功之后打开
Github
网页点击下面图片中箭头所指的地方开始打包:
点击完之后按照下面的格式填写信息:
第一个框是版本号,第二个框是标题,第三个框是描述,根据个人情况填写就行,填写完之后点击绿色按钮进行发布就行了。JitPack 发布
这里就很简单了,打开
JitPack
官网:https://jitpack.io/
这块有两个选择,通过右上角登录你的Github
账号或者在搜索框搜索你刚才上传库的地址,都可以,自己选择,选择之后点击Look up
会出现如下:
点击Get it
静静等待即可。使用依赖
上面完成之后直接就可以使用了,现在工程级目录下的
build.gradle
中添加如下代码:allprojects { repositories { ... maven { url 'https://jitpack.io' } } }
然后在你的
module
级目录下的build.gradle
中添加如下代码:dependencies { implementation 'com.github.zhujiang521:Banner:Tag' }
其实这块网页中都写的有:
问题
本来不想写上面这一堆,但是感觉不写也不对,大家理解起来可能有困难,所以就写了下。
如果是在去年,上面的一套流程完全没有问题,但是在现在,上面的流程。。。不对。
AndroidMavenPlugin 的问题
为什么说不对呢?如果你现在按照上面的流程走的话,在
JitPack
发布那一块你肯定会失败,就是Get it
失败,就像下面这样:
错了不要紧,看看日志错在哪了,点击那个小书的标签,进入日志,发现报错信息如下:FAILURE: Build failed with an exception. * Where: Script '/script/maven-plugin.gradle' line: 2 * What went wrong: A problem occurred evaluating script. > Failed to apply plugin 'com.github.dcendents.android-maven'. > Could not create plugin of type 'AndroidMavenPlugin'. > Could not generate a decorated class for type AndroidMavenPlugin. > org/gradle/api/publication/maven/internal/MavenPomMetaInfoProvider
呃呃,这是啥?
AndroidMavenPlugin
?Google
了之后才知道 JitPack 使用的就是AndroidMavenPlugin
来发布依赖的,OK,既然这个东西有问题,那就来看看怎么加上吧:classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
OK,再次提交代码,打
release
包,然后去JiaPack
网站点Get it
,发现依然报这个错。。。什么鬼。。。
又去
Github
搜索了下 android-maven-gradle-plugin ,发现人家这个库已经废弃了。。。
上面废弃库指向的是安卓官方文档。。。这又是什么鬼。。。也没人告诉我啊!!!过程有多艰难这里就不进行描述了,在下面我会简单说下。经过一番搜索,发现。。。发现我就是个憨批。。。使用
JitPack
不跟着人家官方文档来,跟什么别人的博客?其实大家以后也是,能看官方文档就别看三方写的东西,出错了都不知道为啥。。。来看下吧:
官方文档中清清楚楚、明明白白地写着需要配置Gradle插件我不配置偏偏要去百度上面出现的错误!!!真的是。。。憨批!来吧,看下安卓的文档吧:https://developer.android.com/studio/build/maven-publish-plugin
详细内容大家去官网看吧,这里直接写下解决问题的代码吧:plugins { id 'com.android.library' id 'kotlin-android' id 'maven-publish' } afterEvaluate { publishing { publications { release(MavenPublication) { from components.release groupId = 'com.zj.banner' artifactId = 'banner' version = '1.0.0' } } } }
OK,提交代码,打
release
包,然后再去JiaPack
网站点Get it
,大部分人应该就可以成功了,但是。。。我的还是不行的。。。Java 11 的问题
为啥还是不行呢?不要紧,看看日志错在哪了,点击那个小书的标签,进入日志,发现报错信息如下:
FAILURE: Build failed with an exception. * Where: Build file '/home/jitpack/build/app/build.gradle' line: 2 * What went wrong: An exception occurred applying plugin request [id: 'com.android.application'] > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. You can try some of the following options: - changing the IDE settings. - changing the JAVA_HOME environment variable. - changing `org.gradle.java.home` in `gradle.properties`.
嗯。。。这是什么情况?
其实上面也提到过,
Android Gradle
在升级到 7.0 之后就必须使用 Java 11 以及之后的版本才可以,而我目前使用的是 Java 1.8。嗯,既然需要 Java 11 那就升级下,改下
module
级build.gradle
中的代码:android { ... compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = '11' useIR = true } }
大家要注意,每次修改完代码都需要先把代码
push
到Github
中,然后重新按照上面的步骤打一个release
包,再去JitPack
网页中点击你打的包的那个版本的Git it
才行。提交完了之后执行,发现。。。竟然还在报错,报的还是这个错!这是什么玩意?
其实我在这块卡了很久,一直以为是我本地的代码问题,但后来想明白应该是
JitPack
的问题,因为本地运行是没有任何问题的。想清楚这一点,我来到了
JitPack
的Github
仓库,点开了仓库的Issues
,直接搜索 Java 11,果然,找到了这个问题:
上面的图片中有个JitPack
的帮助文档,点击打开:
但之前其实还有个疑问,我在代码中国呢已经设置了 Java 的版本,为什么还是报错呢?看上面的图片大家应该也已经知道了,JitPack 默认使用的是 OpenJDK Java 8 编译项目,但是咱们需要 Java 11 ,你必须按照上面那样在根目录添加一个 jitpack.yml 文件才可以,OK,那就添加吧:before_install: - sdk install java 11.0.10-open - sdk use java 11.0.10-open jdk: - openjdk11
再次提交代码,打
release
包,然后去JiaPack
网站点Get it
,发现依然报这个错。。。我的天,我当时真的不知道该怎么搞,以为我 jitpack.yml 这个文件格式写的有问题
JitPack
识别不出来?还是别的什么问题?然后改来改去改了几十遍。。。为什么我知道是几十遍呢?下面是我的提交记录:
这只是其中一部分,下面是我Github
的一部分提交记录:
看到上面的提交记录,你就应该能明白当时我的无助。。。。索性不管了,明天再说吧。。。
然而,奇怪的事情发生了,第二天我再次使用相同版本进行
Get it
的时候,虽然还是失败,但是问题竟然变了!!!什么鬼?看下日志:Kotlin: 1.4.31 Groovy: 3.0.7 Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020 JVM: 11.0.2 (Oracle Corporation 11.0.2+9) OS: Linux 4.14.63-xxxx-std-ipv6-64 amd64
通过日志可以看到 Java 已经设置为了 11 ,我的天,昨天搞了一天这玩意没成功,其实已经成功了,我估计是
JitPack
中有缓存。。。害死我了。。。OK,再次提交代码,打
release
包,然后去JiaPack
网站点Get it
,然后就是漫长的等待。。。终于,
Git it
按钮变为了绿色,成功了。。。总结
没什么好总结的,因为感觉自己脑子不够用,遇到问题首先想到的一直是复制错误去百度、去 Google ,从来没想着去最权威的东西——官方文档,老想着别人可能也遇到过这个问题,直接去拿现成的,这是个不好的习惯,得改。
希望大家能以此为戒,努力,共勉。
-
Gradle自定义插件并上传到JitPack
2022-02-24 23:59:37/ 作者简介 / 本篇文章来自投稿老司机Petterp的投稿,文章主要分享了将自定义Gradle插件上传JitPack的过程,相信会对大家有所帮助!同时也感谢作者贡献的精彩文章。 Petterp的博客地址: ... -
上传Android library到JitPack
2021-11-22 19:25:45前言1.1 创建模块1.2 添加android-maven插件1.3 设置自定义库的gradle1.4 上传项目到github1.5 创建一个release版本1.6 继续打开JitPack1.7 使用:2. 快捷方式 1. 前言 当然首先需要科学上网,可以简单的使用Edge的... -
Android代码发布到jitpack仓库教程
2022-05-20 20:59:50适合有一定安卓开发经验的...然后从中选择一个入手最为简单的Maven仓库Jitpack为例,教大家如果把自已编写的Android Library库发布到Jitpack这个Maven仓库中去,以及在发布过程中需要注意的事项,最后掌握这项技能。 -
Gradle基础 | 自定义插件并上传到JitPack
2022-02-11 16:27:51引言 每一个使用 Gradle 的同学,肯定都听过或者写过插件,因为其本身并不难,但碍于现在网上的...本篇主要概括创建插件的三种方式,并如何上传到 JitPack 中。 开发环境基于最新的 Gradle7.0.4 , AndroidStudio BumB -
Android 发布开源库到 JitPack (详细步骤)
2021-06-28 16:22:15发布开源库到 JitPack前言正文一、创建项目二、模块创建与依赖三、测试依赖库四、项目配置五、提交代码六、创建Release&Tag版本七、提交到JitPack八、测试依赖库 前言 最近这段时间,Google和jCenter的事情... -
使用jitpack发布你自己的依赖库
2021-12-30 14:02:37使用jitpack发布你自己的依赖库,通过Google官网提供的maven-publish插件。 -
JitPack的使用
2021-07-20 08:16:57JitPack的使用1 JitPack简介2 JitPack使用1 上传代码到仓库,并创建一个...JitPack官网 官网文档 参考资料: https://blog.csdn.net/user11223344abc/article/details/78403537 https://www.jianshu.com/p/1599a2d3 -
Android 发布项目到 jitpack 流程详解
2021-01-03 16:49:47Android 发布项目到 jitpack 流程详解 总体流程介绍 步骤一、在本地创建一个 libiary 工具类; 步骤二、配置 JitPack 相关的配置信息; 步骤三、排查自己工具类中的错误并上传到 github; 步骤四、创建 release 并在... -
真香警告~JitPack 开源库集成平台
2022-05-09 09:05:14文章目录 前言 简介 使用场景: 一、准备工作 1.1 生成私人令牌 1.2 在JitPack中配置 Gitee 访问权限 二、准备Gitee 码云项目 2.1 将本地的开发项目上传到 Gitee仓库 2.2 为源码仓库创建 发行(Release)版本 三、... -
gradle插件上传到jitpack
2022-03-14 20:06:01后来搜索到了jitpack,这个比较方便,它可以拉取github(其他的有几个平台也支持,不过我没有尝试)代码并构建产物,然后生成相关的依赖语句。 下面总结记录一下步骤 1、需要有github账号及对应的仓库 2、在github上... -
在JitPack上发布Android库
2021-12-19 08:24:44在JitPack上发布Android库 在JitPack上发布Android库其实非常简单,只需要在GitHub上发布一个Release,再用GitHub账号登录JitPack即可。 登录之后JitPack能读取你的GitHub账号下的仓库。这时选中你要发布的仓库,... -
Gitee项目发布到JitPack
2021-11-11 14:09:22Gitee项目发布到JitPack发布前的准备将Gitee项目发布到jitPack使用自己发布的库 发布前的准备 1.搜先注册一个Gitee账号 2.新建一个本地的android项目,并上传到Gitee。 (1) 根目录下build.gradle配置 dependencies ... -
Android Studio发布库到JitPack
2022-03-18 14:46:40Android Studio发布库到JitPack -
gradle7.0.2如何发布jitpack开源项目
2021-11-28 10:39:45当你想用 github + jitpack 发布自己的开源项目的时候,网上找的教程都是 基于gradle 3./4.记得,里面还说道要依赖android-maven-gradle-plugin插件,殊不知这个插件已经被废弃了。下面,我就一步步教大家如何从0... -
Jitpack开发阶段使用SNAPSHOT
2022-01-12 22:27:40利用Jitpack上传包,想必大家都会。但是在开发阶段,遇到问题要及时的修改,修改完还要立马跑起来看效果。但是按照releases的方式太麻烦,要不停的操作github还要改项目中的版本号。 在Jitpack上,Releases项右边... -
发布码云(Gitee)项目到 JitPack
2022-03-22 15:18:50发布码云(Gitee)项目到 JitPack -
Android 发布开源库到 JitPack、jCenter
2021-06-05 04:13:36JitPack、jCenter是我们常用的发布Android开源库的网站,发布成功后就可以在Android Studio中通过Gradle方便的引用到项目中了,相比Eclipse时代要方便的多,对于使用者确实简单了,但对于发布者来说可能还略有坎坷,... -
小知识 - Gradle7.0之后JitPack发布组件需要注意的几个问题
2021-10-13 21:02:00最近在使用 JitPack 发布组件时候,遇到了这几个问题,着实找了好一会才解决,分享一下。???? 问题1 - 调整jdk版本为11 What went wrong: An exception occurred applying plugin request [id: ... -
创建项目上传github并发布至JitPack
2022-03-30 17:13:31注意 jitpack上若是失败则修改: maven { url "https://jitpack.io" } id 'maven-publish' afterEvaluate { publishing { publications { release(MavenPublication) { } } } } 执行命令查...