Artifactory搭建私有Maven仓库及使用
文章目录
在涉及到模块化开发过程中,我们想要将公开或公用组件 aar/jar 上传至MavenCenter or JCenter 仓库中心( 将Android项目开源到JCenter两种方式),以便于持续集成。但是对于有些组件我们不想对外公开这时候就需要我们搭建一个私有仓库了(对公司内部提供使用,仅内网用户可访问)。
JFroge的Artifactory 是一款Maven仓库服务端软件,可以用来在内网搭建maven仓库,供公司内部公共库的上传和发布,以提供公共代码使用的便利性。
1.下载并解压 Artifactory
开源的Artifactory-oss下载地址

由此可见 artfactory使用的是自带的tomcat进行搭建服务的,而最新版tomcat依赖jdk 1.8 , 故
- 配置
java环境 jdk需要是1.8版本
2. 启动Artifactory配置
进入bin目录下,可以发现以下内容 :
windows下 可以通过.bat和.exe进行操作linux与macOS可以通过.sh文件操作

通过两种方式可以进行使用 artifactory :
- 安装方式 及
installService和uninstallService - 非安装方式 :直接使用命令
artifactory.ssh或artifactory.bat
我这里仅仅使用的是非安装方式进行实现。进入bin目录,执行下面命令(macOS),windows双击artifactory.bat
$./artifactory.sh
验证运行是否成功浏览器访问:浏览器访问:http://localhost:8081/artifactory/ 如果没问题则会出出现登陆页面(默认账户为:admin/password)

登陆后会让你重置密码和一些配置(在配置CREATE REPOSITORIES仓库类型时候我们可选择gralde即可)
如果选择gradle的话,会生成下面4个Repository:

其他可选择跳过,默认首页没有任何项目

3. 创建私有仓库
初衷
Android Studio 编译速度慢,一般来说,原因有下面几个。
- Gradle下载慢
- 依赖库下载慢
- 依赖库使用"+"(使用最新的),每次都需要去查找新的(尽量不适用这种方式)
这里,大部分的库,我们可以通过阿里云代理仓库。
但是,如果有我们自己的私有库或者插件的话。这个时候,我们就需要搭建我们自己的私有仓库,让私有仓库代理阿里云的公共仓库。这样,既保证了我们私有库的安全性,又让我们的依赖库也享受到了阿里云代理仓库的便利。
使用Artifactory搭建好我们的私有仓库后,然后我们通过Artifactory提供的Local、Remote以及Virtual来创建不同的仓库。

创建之前,先了解一下Local、Remote、Virtual各自仓库的区别
- Local:本地仓库。一般用于
部署私有库以及自定义Gradle插件(上传的组件不会向外部进行同步)。 - Remote:远程仓库。用于
代理及缓存公共仓库,不能向此类型的仓库上传私有组件。 - Virtual:虚拟仓库。不是真实在存储上的仓库,可以将多个本地或远程仓库合并到一起。
接下来我们针对上述三种类型仓库逐个进行实践
3.1 New Local Repository(新建本地仓库)
本地仓库,用于动态部署一些我们开发的库(例如Android aar,jar)或者手动上传部署一些Gradle包,或者自己写的Gradle插件等等。
-
创建本地仓库
-
点击Artifactory右上角—>选择New Local Repositories
-
选择Package类型(例如:Maven、Gradle等),填写Repository key(例如:android_local),点击Save & Finish,到这里就创建了一个本地的Maven仓库。

-
然后,我们在Local Repositories下面就看到了,我们创建的本地仓库(android_local)

仓库创建完成,接下来通过手动部署和动态部署我们包或者库
-
手动部署包
以android的gradle包为例,将我们下载的Gradle包手动部署到这个本地仓库。
-
点击Artifactory左侧栏目切换到Application选项卡,选择Artifactory—>artifacts下的android_local 然后点击右上角Deploy部署

-
选择部署文件(可选单个文件部署和多个文件部署),我们使用Single单个文件部署,选择我们事先下载好的gradle.zip包上传

-
上传成功后,返回仓库列表,就看到了这个手动部署Gradle的zip包

注意:这里,有个细节需要关注一下。仓库默认上传文件大小是100M,我们需要改大一些,不然,上传会失败
点击右上角账号,选择 Edit Profile—>Artifactory—>General—>Settings—>File Upload Max Size (MB) 重置上传文件的大小限制,我们改成400M,点击Save。如下图,修改完后,再上传我们的Gradle的zip就没有问题了。

-
到这里,我们通过手动部署的方式,将gradle包部署到了我们的私有仓库的本地仓库中。使用方式为Android项目根目录下gradle—>wrapper—>gradle-wrapper.properties文件中修改系统默认的
distributionUrl为我们私有Maven本地仓库中的Gradle路径#Wed Jul 01 15:18:06 CST 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists #distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip #将上面Gradle插件下载路径替换为下面我们私有的Maven上本地仓库中的路径 distributionUrl=http\://xxx.xxx.xxx.xxx:xxxx/artifactory/android_local/gradle-5.2.1-all.zip
动态部署包
上面我们通过手动部署的方式,在本地仓库部署了gradle包。接下来我们通过动态部署的方式,将我们自己开发的Android .aar包部署到该私有Maven仓库内的本地仓库中。
-
创建一个Android Module(libpay),配置该库所在项目的根
build.gradle,添加jfrog的classpathdependencies { classpath 'com.android.tools.build:gradle:3.4.1' // 配置 classpath 使用 4.+ 版本 classpath "org.jfrog.buildinfo:build-info-extractor-gradle:4+" } -
配置该Module的
build.gradle-
添加artifactory和maven-publish插件
apply plugin: 'com.jfrog.artifactory' apply plugin: 'maven-publish' -
配置publishing和artifactory
//私有Maven仓库地址 def MAVEN_LOCAL_PATH = 'http://xxx.xxx.xxx.xxx:xxxx/artifactory' //发布组件的artifactId(这里同时发布debug和release版) def ARTIFACT_ID_DEBUG = 'libpay-debug' def ARTIFACT_ID_RELEASE =
-

本文详细介绍了如何使用Artifactory搭建私有Maven仓库,包括下载、配置和启动Artifactory,创建本地、远程和虚拟仓库,以及如何通过手动和动态方式部署包。同时,还提供了如何配置项目以使用这些仓库,以及如何解决内网用户访问资源出现的401错误。
1940

被折叠的 条评论
为什么被折叠?



