我的Android前沿技术—— Artifactory私服 搭建

news2024/11/15 17:53:22

我们说的私服,其实指的是企业局域网内的软件包依赖库。

说到软件库,就会牵扯出另一个概念——包管理器。

包管理器是在电脑中自动安装、配置、卸载和升级软件包的工具组合。包管理器由于其便捷性,被越来越多的新技术所采纳,从老一代的rpm、dpkg、maven,到中生代的npm、pypi、nuget,再到新生代的helm chart等,都属于包管理器。

包管理器为了实现软件包的自动升级和安装配置,一般会有几种类型的仓库:本地仓库、远程仓库/代理仓库、虚拟仓库。

什么是Artifacory仓库?

Artifactory是一个单独的工具,它可以与所有不同的技术“对话”,从而提高生产力,减少维护工作,并且促进不同部件之间的自动化集成。为了适应任何开发生态系统,Artifactory从基础开始设计,现在Artifactory可以管理为任何主要格式程序包提供本地支持的存储库布局。

简而言之,Artifacory和nexus一样,也是一个代码依赖的仓库,不过他功能更加强大。他不仅能够提供java语言的maven仓库,还能提供其他语言的(比如ios,php)的代码依赖仓库,可以说很牛叉。

私服的选择

用于Android 的私服,了解的有以下两个:

  • Nexus
  • Artifactory

由于Nexus只支持maven,而Artifactory支持maven,php,docker,npm等等,我们今天就只讲述下Artifactory的使用。 Artifactory是由Jfrog开发的一款Maven仓库服务端软件,常用于内网部署maven仓库,提供公司内部公共库的上传和发布,同时可以为远程库提供缓存,以提高公共代码使用的便利性。

Artifactory 安装

在 /usr/local 下创建 artifactory 文件夹并进入

cd /usr/local/
mkdir artifactory
cd artifactory
复制代码

将下载好的安装包放到里面

[root@centos artifactory]# ls
artifactory-injector-1.1.jar  artifactory-pro-6.6.0.zip
复制代码

解压 artifactory-pro-6.6.0.zip 安装包

unzip artifactory-pro-6.6.0.zip
复制代码

运行 JAR 包

java -jar artifactory-injector-1.1.jar
复制代码

首先运行命令 2,并输入 artifactroy 所在目录

[root@centos artifactory]# java -jar artifactory-injector-1.1.jar 
What do you want to do?
1 - generate License String
2 - inject artifactory
exit - exit
# 执行命令 2
2
where is artifactory home? ("back" for back)
# 输入目录
artifactory-pro-6.6.0
复制代码

然后运行命令 1,生成密钥并记住

What do you want to do?
1 - generate License String
2 - inject artifactory
exit - exit
# 执行命令 1
1
# 得到密钥,复制一份
eyJhcnRpZmFjdG9yeSI6eyJpZCI6IiIsIm93bmVyIjoicjRwMyIsInZhbGlkRnJvbSI6MTU5MjA5OTA2MDI5NywiZXhwaXJlcyI6NDc0NzgwMTQ2MDI5NiwidHlwZSI6IkVOVEVSUFJJU0VfUExVUyIsInRyaWFsIjpmYWxzZSwicHJvcGVydGllcyI6e319fQ==
复制代码

至此安装完毕,下面开始运行

Artifactory 运行

进入 /artifactory-pro-6.6.0/bin 目录,并运行 artifactory.sh

[root@centos bin]# ./artifactory.sh 
复制代码

当看到以下内容即代表开启成功

##########################################################
### Artifactory successfully started (47.554 seconds)  ###
##########################################################
复制代码

默认端口号为 8081,在浏览器中打开进入(如果是外网访问需要放行端口)

首先进入引导页面,首先输入之前生成的密钥,进入下一步,设置账户密码。

至此运行成功

Artifactory 使用(以Android为例)

介绍

Artifactory 的存储库(Repositories) 主要有以下几种

  • Local:本地仓库
  • Remote:远程仓库
  • Virtual:虚拟仓库,可以将多个本地或远程仓库合并到一起

创建本地仓库(Local)

点击右上角的加号➕,选择 Package Type 为 maven

指定 Repository Key,这里为 android_local,并保存

进入菜单 Artifacts 就可以看到刚刚创建的本地存储库了,点击右上角的 Deploy 可以上传本地包

⚠️ 注意 默认会限制上传文件大小为 100MB ,可以进入以下路径修改 Admin => General Configuration => File Upload Max Size (MB)

这里以 gradle 为例

结果如下

创建远程仓库(Remote)

  1. 点击右上角的加号➕,选择 Package Type 为 maven
  2. 指定 Repository Key 和 URL ,并保存

这里指定3个

  • google: maven.aliyun.com/repository/…
  • center: maven.aliyun.com/repository/…
  • public: maven.aliyun.com/repository/…

结果如下

创建虚拟仓库(Virtual)

  1. 点击右上角的加号➕,选择 Package Type 为 maven
  2. 指定 Repository Key,这里为 android_group
  3. 在下面的 Available Repositories 指定需要的存储库,并保存

配置项目

配置 gradle 下载路径,打开 /项目/gradle/wrapper/gradle-wrapper.properties ,将 distributionUrl 改为 artifactory 地址

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
distributionUrl=https://<you ip address>:8081/artifactory/android_group/gradle-5.6.4-all.zip
复制代码

配置仓库地址,打开 /项目/build.gradle 文件,修改仓库地址为 artifactory

buildscript {
​
    repositories {
        
        maven{
            url 'https://<you ip address>:8081/artifactory/android_group/'
        }
        
    }
    
    ......
​
}
​
allprojects {
    repositories {
        
        maven{
            url 'https://<you ip address>:8081/artifactory/android_group/'
        }
​
    }
}
复制代码

至此配置完毕,重新构建即可

以上就是Android前沿技术中的 Artifactory 的搭建与使用;更多Android的前沿技术与核心技术;可移至《Android核心技术手册》这里;30 个技术板块文档可供参考。

文末

使用Artifactory搭建本地仓库需要以下步骤

1.下载Artifactory并运行

2.在build.gradle当中配置maven及artifactory的属性

3.使用gradle命令将library打包并上传到Artifactory

4.在需要使用的app中,添加maven的路径,并在dependencies中添加library对应的路径,然后同步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Cesium 编程入门

Cesium 是什么&#xff1f; Cesium 是一个跨平台、跨浏览器的展示三维地球和地图的Javascript库。 Cesium 使用WebGL 来进行硬件加速图形&#xff0c;使用时不需要任何插件支持&#xff0c;但是浏览器必须支持WebGL。 Cesium能做什么&#xff1f; 支持2D、2.5D、3D形式的地图展…

Java代码规范

前言 由于近年来对于代码质量的要求越来越高&#xff0c;特制定部门级Java代码规范规则集X-JAVA-RULE&#xff0c;整体要求规则可用可查、循序渐进。 可用是指考虑目前已有代码的体量&#xff0c;不满足这些规则的代码能否能被修复&#xff0c;如果工作量巨大不能被修复或者实…

小程序和Vue+uniapp+unicloud培训课件

文章目录**一、什么是小程序****1.1** **小程序简介****1.2** **小程序的特点****1.3** **小程序的开发流程**个人小程序和企业小程序的区别1.4 小程序代码构成1.4.1 JSON 配置1.4.2 WXML 模板**数据绑定**逻辑语法条件逻辑列表渲染模板引用共同属性1.4.3 WXSS 样式1.4.4 JS 逻…

9. IP组播(理论)

作为IP传输三种方式之一&#xff0c;IP组播通信指的是IP报文从一个源发出&#xff0c;被转发到一组特定的接收者。相较于传统的单播和广播&#xff0c;IP组播可以有效地节约网络带宽、降低网络负载&#xff0c;所以被广泛应用于IPTV、实时数据传送和多媒体会议等网络业务中。 …

5 逻辑回归及Python实现

1 主要思想 分类就是分割数据&#xff1a; 两个条件属性&#xff1a;直线&#xff1b;三个条件属性&#xff1a;平面&#xff1b;更多条件属性&#xff1a;超平面。 使用数据&#xff1a; 5.1,3.5,0 4.9,3,0 4.7,3.2,0 4.6,3.1,0 5,3.6,0 5.4,3.9,0 . . . 6.2,2.9,1 5.1,2.5…

一个容易被忽视的标签 —— iframe

前言 甲问&#xff1a;说说你知道的HTML标签。 乙于是说了一大堆标签&#xff0c;比如div&#xff0c;span等等。 甲说&#xff1a;那你知道 iframe 标签吗&#xff1f; 乙这时候迟疑了片刻&#xff0c;缓缓说出&#xff1a;知道它&#xff0c;但是不太了解这个标签。 HTM…

学到了,原来华为是这样判断MES系统的好坏的

可以想象华为公司对供应商的要求是多么严格&#xff0c;那么我们今天来谈一下华为对供应商工厂MES系统这块的要求&#xff0c;这要从生产防错系统、品质管控系统、品质追溯系统、出货防错系统四个方面来说。一、生产物料和生产治具防错系统建立完整的物料和治具标签方案&#x…

常用的数据脱敏(手机、邮箱、身份证号)

一、什么是数据脱敏 先来看看什么是数据脱敏&#xff1f;数据脱敏也叫数据的去隐私化&#xff0c;在我们给定脱敏规则和策略的情况下&#xff0c;对敏感数据比如 手机号、银行卡号 等信息&#xff0c;进行转换或者修改的一种技术手段&#xff0c;防止敏感数据直接在不可靠的环境…

AcWing3485. 最大异或和

先看题目&#xff1a; 说实话&#xff0c;我看到这道题就想用滑动窗口&#xff0c;但是滑了一下发现不太对啊&#xff0c;如果我用滑动窗口的话&#xff0c;那么最后肯定是一个固定长度为m的窗口在持续计算&#xff0c;区间长度小于m的区间的异或和肯定会被遗漏。然后我就想怎么…

vue前端架构说明书模板示例

目录 1. 技术说明... 2 1.1 版本明细... 2 1.2 核心技术介绍... 2 2. 项目结构说明... 3 3. 自动化部署设置说明... 5 4. 打包及运行说明... 5 5. 导包说明... 6 5.1 方案一... 6 5.2 方案二... 7 5.3 补充说明... 7 6. 修改本地运行时链接的服务器说明... 7 7. 常…

从 B 站出发,用 Chrome devTools performance 分析页面如何渲染

页面是如何渲染的&#xff1f;通常会得到“解析 HTML、css 合成 Render Tree&#xff0c;就可以渲染了”的回答。但是具体都做了些什么&#xff0c;却很少有人细说&#xff0c;我们今天就从 Chrome 的性能工具开始&#xff0c;具体看看一个页面是如何进行渲染的&#xff0c;以及…

视频传输协议详解(RTMP、RTSP、HLS)

RTMP——Real Time Messaging Protocol&#xff08;实时消息传输协议&#xff09;RTMP是由Adobe公司提出的&#xff0c;在互联网TCP/IP五层体系结构中应用层&#xff0c;RTMP协议是基于TCP协议的&#xff0c;也就是说RTMP实际上是使用TCP作为传输协议。TCP协议在处在传输层&…

sql学习一

文章目录一、if 语句二、去重问题三、concat,upper,lower四、group_concat五、like 模糊匹配六、union和union all七、流程控制语句case八、limit一、if 语句 if(expr1, expr2, expr3)当expr1的值为真时函数的返回值为expr2&#xff0c;当expr1的值为假时&#xff0c;函数的返…

安装redis并设置开机自启动允许远程链接

一、进入/usr/local目录下面&#xff1b;下载redis包wget https://download.redis.io/releases/redis-5.0.14.tar.gz二、安装gccyum install gcc-c三、解压、进入目录、编译tar -xvf redis-5.0.14.tar.gzcd redis-5.0.14make ##如果报错zmalloc.h:50:31: 致命错误&#xff1a;j…

打破单片机开发模式--胶水语言(JavaScript)

概述 传统的嵌入式单片机开发基本上形式如下图&#xff1a; 该流程对于功能单一或者功能变更极少的场景是比较友好的&#xff0c;但是对于设备应用层变更比较多或者公板方案开发应用的场景&#xff0c;上述场景显的有些累赘。那么有什么方式可以解决呢&#xff1f;&#xff1f…

U-Boot 之七 详解 Driver Model 架构、配置、命令、初始化流程

U-Boot 在 2014 年 4 月参考 Linux Kernel 的驱动模型设计并引入了自己的 Driver Model&#xff08;官方简称 DM&#xff09; 驱动架构。这个驱动模型&#xff08;DM&#xff09;为驱动的定义和访问接口提供了统一的方法&#xff0c;提高了驱动之间的兼容性以及访问的标准性。 …

和月薪3W的聊过后,才知道自己一直在打杂...

前几天和一个朋友聊面试&#xff0c;他说上个月同时拿到了腾讯和阿里的offer&#xff0c;最后选择了阿里。 我了解了下他的面试过程&#xff0c;就一点&#xff0c;不管是阿里还是腾讯的面试&#xff0c;这个级别的程序员&#xff0c;都会考察项目管理能力&#xff0c;并且权重…

[牛客网] HJ35 蛇形矩阵(写了好久才写出来)

链接https://www.nowcoder.com/practice/649b210ef44446e3b1cd1be6fa4cab5e?tpId37&tqId21258&rp1&ru/exam/oj/ta&qru/exam/oj/ta&sourceUrl%2Fexam%2Foj%2Fta%3Fdifficulty%3D2%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&dif…

区块链行业遭供应链攻击,上万加密钱包被“抄底”损失上亿美元

当地时间8月2日晚间&#xff0c; 区块链行业遭遇了一次行业重创 。据科技媒体TechCrunch报道&#xff0c; 若干名攻击者“抄底”了上万个加密钱包&#xff0c;钱包内有价值上亿美元的代币。 据了解遭受攻击的加密钱包包括Phantom、Slope和TrustWallet等。涉及到的币种除了SOL、…

Vue2的tsx开发入门完全指南

本篇文章尽量不遗漏重要环节&#xff0c;本着真正分享的心态&#xff0c;不做标题党 下面进入正题&#xff1a; 由于现在vue的官方脚手架已经非常完善我们就不单独配置webpack了&#xff0c;节省大量的时间成本。 首先使用vue/cli创建一个vue模版项目&#xff08;记得是vue/…