返回介绍

4.2 仓库管理软件

发布于 2024-09-08 18:29:26 字数 7856 浏览 0 评论 0 收藏 0

4.2.1 JFrang Artifactory

JFrang 官网: http://www.jfrog.org/sites/artifactory/latest/
JFrog Artifactory 开源版: http://www.jfrogchina.com/open-source/
JFrog Artifactory 企业版(免费试用,商用版 2950 美元每年):
https://www.jfrog.com/artifactory/free-trial/?lang=zh-hans#High-Availability

JFrog ArtiFactory 是一款二进制存储管理工具,用来管理构建工具(如:gradle)等所依赖的二进制仓库,以方便管理第三方库和发布目标版本库,从 而提高软件开发效率。它提供大量的插件以利于和不同工具之间的整合,内部使用权限管理更加安全,并支持高并发等等特性。

表格 28 JFrog Artifactory 核心能力

特性描述
开发语言支持Java/C++/Python/Javascript/Golang/Php/Docker/Scala 等等
元数据管理支持任意维度的元数据记录、检索
深度依赖管理跨语言正反向依赖解析
开源安全管控深度递归扫描、强大的扩展与集成能力
复制分发多地域数据中心、边缘节点支持
高可用同城多活、异地热备容灾、高并发能力

Artifactory 仓库主要有四种类型,远程仓库、本地仓库、虚拟仓库及分发仓库,分别应用在如下不同的场景。
1574529341504
图 2 Artifactory 仓库类型

  • 远程仓库:Artifactory 仓库支持代理公网或内网二进制软件制品仓库(Artifactory, Nexus,Harbor 等),按需获取后在本地进行缓存,可大幅度提升构建效率。
  • 本地仓库:Artifactory 本地仓库用来存储本地构建产出的软件制品。本地仓库中的软件制品通常都带有丰富的元数据,并且通过基于角色的访问控制(RBAC) 实现资源隔离。
  • 虚拟仓库:为满足制品管理的多团队协作需求,虚拟仓库通过打包任意数量的远程仓库和本地仓库,暴露唯一的访问入口的方式,将制品提供者和消费者之间的耦合度降到最低,提升协作效率。
  • 分发仓库:分发仓库通过 JFrog Bintray SaaS 服务满足软件制品公网分发的需求,提供默认的全球 CDN 加速服务。

Artifactory 目录结构如下:

  • backup —— 仓库的备份,可以使用 cron 表达式设置备份策略,quartz 定时调度程序在指定的时间里运行备份任务,备份时间间隔 在‘ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’文件中指定。
  • bin ——内置 jetty 服务器的运行批处理文件
  • data —— 包含 derby 数据库文件,如果你想以一个空的构件库开始,可以删除这个目录中的所有内容,在全新的 artifactory 安装中,这个目录是空的。
  • etc —— artifactory 的配置文件,有‘artifactory.config.xml’ 、‘jetty.xml ‘和‘log4j.,properties’
  • lib —— 包含所有依赖的 jar 文件
  • logs —— 日志文件
  • webapps —— 包含 war 文件,它可以被拷贝到 Tomcat 中安装。
    1)MAVEN 仓库
    设置 MAVEN 三个仓库,需要修改配置文件~<ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml:
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://artifactory.jfrog.org/xsd/1.0.0"
     xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0
     http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd">
    <!-- Backup every 12 hours -->
    <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>-->
    <localRepositories>
   <localRepository>
    <key>private-internal-repository</key>
    <description>Private internal repository</description>
    <handleReleases>true</handleReleases>
    <handleSnapshots>true</handleSnapshots>
   </localRepository>
   <localRepository>
    <key>3rd-party</key>
    <description>3rd party jars added manually</description>
    <handleReleases>true</handleReleases>
    <handleSnapshots>false</handleSnapshots>
   </localRepository>
    </localRepositories>
    <remoteRepositories>
   <remoteRepository>
    <key>ibiblio</key>
    <handleReleases>true</handleReleases>
    <handleSnapshots>false</handleSnapshots>
    <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern>
    <url>http://repo1.maven.org/maven2</url>
   </remoteRepository>
    </remoteRepositories>
</config>

启动 Tomcat 并且输入 http://localhost:8080/artifactor

修改 settting.xml

Maven 使用位于 ‘~/.m2/settings.xml’ 目录的 settings.xml 文件来获取 Maven 仓库 ,如果没有在该文件中指定仓库,Maven 默认使用 ibiblio.org 上的仓库, settings.xml 文件必须被修改以使用新的仓库:

<profiles>
   <profile>
      <id>dev</id>
      <properties>
         <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home>
      </properties>
      <repositories>
         <repository>
            <id>central</id>
            <url>http://localhost:8080/artifactory/repo</url>
            <snapshots>
            <enabled>false</enabled>
            </snapshots>
         </repository>
         <repository>
            <id>snapshots</id>
            <url>http://localhost:8080/artifactory/repo</url>
            <releases>
            <enabled>false</enabled>
            </releases>
         </repository>
      </repositories>
      <pluginRepositories>
         <pluginRepository>
            <id>central</id>
            <url>http://localhost:8080/artifactory/repo</url>
            <snapshots>
            <enabled>false</enabled>
            </snapshots>
         </pluginRepository>
         <pluginRepository>
            <id>snapshots</id>
            <url>http://localhost:8080/artifactory/repo</url>
            <releases>
            <enabled>false</enabled>
            </releases>
         </pluginRepository>
      </pluginRepositories>
   </profile>
</profiles>

4.2.2 nexus

1574529453991

(1)下载并安装 Nexus
Nexus 只需下载 war 包放到 tomcat 服务器上便可。

(2)配置 Nexus Repository
打开 WEB 管理界面: http://localhost:8081/nexus/index.html
点击右上角 Log In 进行登录,默认帐号:admin、密码:admin123
点击左侧 Repositories 项 -> central 仓库 -> Configuration -> Download Remote Indexes=True -> Save,表示下载远程仓库的索引。
右键 central 仓库 -> Update Index,更新远程仓库索引到本地,这一步能够加速本地索引。
说明:

  • 新搭建的 neuxs 环境只是一个空的仓库,需要手动和远程中心库进行同步,nexus 默认是关闭远程索引下载,最重要的一件事情就是开启远程索引 下载。 找到右边仓库列表中的三个仓库 Apache Snapshots,Codehaus Snapshots 和 Maven Central,然后再没有仓库的 configuration 下把 Download Remote Indexes 修改为 true。然后在这三个仓库上分别右键,选择 Repair Index,这样 Nexus 就会去下载远程的索引文件。右键仓库 -> Update Index,更新远程仓库索引到本地,这一步能够加速本地索引。
  • 新建公司的内部仓库,步骤为 Repositories –> Add –> Hosted Repository,在页面的下半部分输入框中填入 Repository ID 和 Repository Name 即可,另外把 Deployment Policy 设置为 Allow Redeploy
  • Nexus 中仓库组的概念是 Maven 没有的,在 Maven 看来,不管你是 hosted 也好,proxy 也好,或者 group 也好,对我都是一样 的,我只管根据 groupId,artifactId,version 等信息向你要构件。为了方便 Maven 的配置,Nexus 能够将多个仓库, hosted 或者 proxy 合并成一个 group,这样,Maven 只需要依赖于一个 group,便能使用所有该 group 包含的仓库的内容。

(3)在项目中配置 Nexus Repository 的信息
pom.xml

<distributionManagement>
    <repository>
     <id>releases</id>
     <name>Nexus Release Repository</name>
     <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
     <id>snapshots</id>
     <name>Nexus Snapshot Repository</name>
     <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
</distributionManagement>

settings.xml
settings.xml 配置账号密码。注意 server 的 id 与 repository 的 id 必须对应。

(4)发布到 Nexus Repository
项目中执行 mvn deploy.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文