Jcenter关闭,Artifactory私服搭建

关于Jcenter将于2021.5.1日sunset

Jfrog在2021.2.3日发出公告,将于5.1日正式陨落。Jcenter sunset公告传送门.

我其实是在4.7日更新库到jcenter,引用的地方却下载不到才在官网上看到这则公告。不禁感慨,曾经Jcenter是Android官方指定的托管中心,如今却落得黯淡离场。

毕竟一直白嫖的,也不好说人家不厚道,还是想办法迁移吧,不然项目编译都进行不下去。

由于项目着急编译,所以就暂时用Artifactory搭建私服过渡,搜索相关资料的时候发现当前大家好像还对jcenter关闭这事没什么反应,搭建过程中也着实走了不少弯路,故有了这篇备忘录,希望帮到大家。

jCenter的替代方案

1. mavenCentral

google已经替换成mavenCentral(),公司的话一般推荐使用,但是部署比较麻烦需要审核,国内使用还得翻墙。

2. Jitpack

跟Github有较深合作,可以一键授权拉取公开项目,私有项目需要收费。支持Gitlab、Gitee、BitBucket等git服务端。

2. 私服

市场上用的比较多的Nexus和Artifactory,两者的区别网上有很多对比,我们的使用情景仅是托管aar,Nexus只有商业付费版,Artifactory有开源版本,所以选择后者。

Jfrog Artifactory私服搭建

  1. 下载客户端
    我们下载开源版本 下载链接, 下载自己系统适用的版本
    下载自己系统适用的版本
  2. 运行客户端
    解压后,找到bin目录下的这个文件,双击运行运行客户端
    这个bat会运行大概3分钟,中间没打印的时候千万别以为它挂了,不用着急喝杯茶就启动起来了。
    运行起来
    在浏览器中输入 http://localhost:8081/artifactory ,如果没有意外,这会应该可以进入UI界面了。使用默认账号和密码登录,

username = “admin”
password = “password”

然后按照提示修改密码,输入前缀后创建local repo,这里我圈起来的就是repo key,后面上传aar到私服时需要指定。
默认repo

至此最基本的配置就做完了,还有新增用户、组织管理啥的有空搞一搞。

  1. 配置Lib-project上传aar
  • 项目Root目录的build.gradle
buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.4'
        classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4.15.2"
    }
}

  • 项目app目录的build.gradle
apply plugin: 'maven-publish'
apply plugin: 'com.jfrog.artifactory'

//gradlew clean artifactoryPublish 
def MAVEN_LOCAL_PATH ='http://localhost:8082/artifactory'
def ARTIFACT_ID = 'BLSWebSocketAndroid'
def VERSION_NAME = 1.0.27
def GROUP_ID = 'com.ibroadlink'


artifactory {
    contextUrl = MAVEN_LOCAL_PATH
    publish {
        repository {
            repoKey = 'Your repo key' // 上一步我圈起来的那一坨,我选择的是broadlink_repo_local
            username = "Your user name" // 上一步私服里,你的账号,可以直接用admin,但是建议创建一个非管理员账号,admin不建议暴露在代码中。
            password = "Your password" // 账号的密码
        }
        defaults {
            publications('aar')
            publishArtifacts = true
            properties = ['qa.level': 'basic', 'dev.team': 'core']
            publishPom = true
        }
    }
}

artifactoryPublish.dependsOn('build')
publishing  {
    publications {
        aar(MavenPublication) {
            groupId GROUP_ID
            version = VERSION_NAME
            artifactId ARTIFACT_ID
            artifact("$buildDir/outputs/aar/${project.getName()}-release.aar")
            pom.withXml {
                def dependencies = asNode().appendNode('dependencies')
                configurations.compile.allDependencies.each{
                    if(it.group != null) {
                        def dependency = dependencies.appendNode('dependency')
                        dependency.appendNode('groupId', it.group)
                        dependency.appendNode('artifactId', it.name)
                        dependency.appendNode('version', it.version)
                    }
                }
            }
        }
    }
}

  • 在android studio的Terminal中输入指令,即可将aar上传到私服。过个1分钟左右即可在浏览器的UI中看到自己上传的文件

gradlew clean artifactoryPublish

在这里插入图片描述

  1. 配置App-project下载aar
  • 项目app目录的build.gradle
buildscript {
    repositories {
        maven { url 'http://localhost:8082/artifactory/Your repo key/'} // 上一步我圈起来的那一坨,我选择的是broadlink_repo_local
    }
}

allprojects {
    repositories {
        maven { url 'http://localhost:8082/artifactory/Your repo key/'} // 同上
    }
}
  • 项目app目录的build.gradle
dependencies {
	implementation 'com.ibroadlink:BLSWebSocketAndroid:1.0.27'
}

对应规则

group_id : com.ibroadlink
artifact_id : BLSWebSocketAndroid
version_name: 1.0.27

  1. 我遇到的问题
  • Failed to deploy file. Status code: 405
    上传aar时遇到的,确认一下url是不是写对了

http://localhost:8081/artifactory

  • status code 401 from server: Unauthorized
    下载aar时遇到的,需要设置一下权限
    401权限
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值