一、私有仓库的价值

  开发Java应用系统,用到Maven、sbt和 Gradle等构建工具,在构建过程中一般需要从互联网下载依赖库,构建私有仓库就是为了在开发组或者部门内共用,从而节省整体的下载成本和构建成本。下面先以Maven为例说明。

  Maven是一个强大的构建工具,一般用于Java项目。Maven项目基于对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

Maven的Java项目一般需要下载第三方组件,下载后构成本地仓库,为了减少网络对构建项目的影响,一般会构建私服仓库,代理第三方库。Nexus就是构建私服仓库的优秀软件。

图 1 三层仓库架构

二、准备工作

2.1、安装Java编译环境

Java编译环境包括核心的JDK和编译工具,因为Java的编译工具有很多种,而开源项目作者的随意性很高,常用的工具有maven,gradle,sbt,ant等等,本文关注Maven。

因为Oracle不再维护Java1.7,所以采用Java 1.8作为编译核心.

2.1.1、安装

操作系统采用Centos7.4

yum install java-1.8.-openjdk-devel java-1.8.-openjdk java-1.8.-openjdk-headless -y

2.1.2、验证

查看jdk版本号

java -version
Picked up _JAVA_OPTIONS: -Xmx2048m -XX:MaxMetaspaceSize=512m -Djava.awt.headless=true
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b12)
OpenJDK -Bit Server VM (build 25.131-b12, mixed mode)

2.1.3、设置环境变量

vi ~/.bashrc

增加

export JAVA_HOME=/usr/lib/jvm/java
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH

即刻生效

source ~/.bashrc

2.2、虚拟机访问互联网

vi /etc/sysconfig/network-scripts/ifcfg-ens32

注:环境不同网卡名会不同

增加天津联通的DNS(注:作者在天津,请按个人本地的运行商做相应修改)

DNS1=202.99.96.68
DNS2=202.99.104.68

在实际测试中感觉天津电信的DNS更加靠谱,访问一些特殊网站返回的IP能够顺利访问,大家根据实践选择吧

DNS1=219.150.32.132
DNS2=219.146.0.130

重新启动网络

systemctl restart network

测试

ping www..com
PING .xdwscache.ourglb0.com (42.81.9.47) () bytes of data.
bytes from 42.81.9.47 (42.81.9.47): icmp_seq= ttl= time=9.66 ms
bytes from 42.81.9.47 (42.81.9.47): icmp_seq= ttl= time=10.4 ms

三、安装Nexus

3.1、下载nexus

从官方网站现在最新3.X版

https://www.sonatype.com/download-oss-sonatype

下载(2018年3月)最新版nexus-3.9.0-01-unix.tar.gz ()

3.2、部署

先规划存储私有仓库的目录,作者本机的/opt目录空间较多,所以以/opt为例

cd /opt/scm
tar -xf ~/download/nexus-3.9.--unix.tar.gz -C .

生成两个目录

nexus-3.9.-
sonatype-work

3.3、系统服务

3.3.1、编辑系统服务文件

vi /etc/systemd/system/nexus.service

[Unit]
Description=nexus service
After=network.target [Service]
Type=forking
LimitNOFILE=
ExecStart=/opt/scm/nexus-3.9.-/bin/nexus start
ExecStop=/opt/scm/nexus-3.9.-/bin/nexus stop
User=ansible
Restart=on-abort [Install]
WantedBy=multi-user.target

3.3.2、设置为自启动服务

sudo systemctl  daemon-reload
sudo systemctl start nexus.service
sudo systemctl status nexus.service
sudo systemctl enable nexus.service

四、设置Nexus

4.1、浏览器登录

http://192.168.154.11:8081/

用户名的密码为:admin admin123

4.2、进入管理界面

4.3、增加新的代理源

设置名称和URL

Cache统一设置为200天 288000

逐个增加常用代理

. aliyun
http://maven.aliyun.com/nexus/content/groups/public
. apache_snapshot
https://repository.apache.org/content/repositories/snapshots/
. apache_release
https://repository.apache.org/content/repositories/releases/
. atlassian
https://maven.atlassian.com/content/repositories/atlassian-public/
. central.maven.org
http://central.maven.org/maven2/
. datanucleus
http://www.datanucleus.org/downloads/maven2
. maven-central (安装后自带,仅需设置Cache有效期即可)
https://repo1.maven.org/maven2/
. nexus.axiomalaska.com
http://nexus.axiomalaska.com/nexus/content/repositories/public
. oss.sonatype.org
https://oss.sonatype.org/content/repositories/snapshots
.pentaho
https://public.nexus.pentaho.org/content/groups/omni/

再次强调,在

How long (in minutes) to cache metadata before rechecking the remote repository.处

统一设置为

288000 即200天,当然可以设置为更长的时间

设置maven-public

将这些代理加入Group

4.3、设置私用仓库可重复发布

  Nexus安装后自带maven-releases,maven-snapshots两个仓库,用于将生成的jar包发布在这两个仓库中,在实际开发中需要将maven-releases设置为可以重复发布。

  maven-releases

  

  注:maven-snapshots缺省是可以重新部署的。

五、安装maven并设置私用仓库

5.1、下载安装

从maven官网下载3.5.0 http://maven.apache.org/download.cgi

cd tools
tar -xf ../download/apache-maven-3.5.-bin.tar.gz –C .

5.2、设置环境变量

vi ~/.bashrc

增加

export PATH=/home/ansible/tools/apache-maven-3.5./bin:$PATH

即刻生效

source ~/.bashrc

5.3、测试

mvn -v

Picked up _JAVA_OPTIONS: -Xmx2048m -XX:MaxMetaspaceSize=512m -Djava.awt.headless=true
Apache Maven 3.5. (ff8f5e7444045639af65f6095c62210b5713f426; --04T03::+:)
Maven home: /home/ansible/tools/apache-maven-3.5.
Java version: 1.8.0_102, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.-openjdk-1.8.0.102-.b14.el7.x86_64/jre
Default locale: en_US, platform encoding: UTF-
OS name: "linux", version: "3.10.0-514.el7.x86_64", arch: "amd64", family: "unix"

5.4、配置

vi ~/tools/apache-maven-3.5.0/conf/settings.xml(本地服务器可以使用localhost,开发组其他服务器则修改为对应Nexus服务器的域名或者IP地址)

<settings>
<pluginGroups>
<pluginGroup>org.sonatype.plugins</pluginGroup>
</pluginGroups>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
<servers>
<server>
<id>nexus</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
</settings>

Nexus搭建开发组的私有仓库的更多相关文章

  1. 用nexus搭建自己的maven私有仓库

    用nexus搭建自己的maven私有仓库  刚安装nexus时,nexus启动失败,启动不到1分钟,自动停止.后来查找到了原因: Java 6 Support EOLOracle's support ...

  2. Docker容器化【Dockerfile编写&&搭建与使用Docker私有仓库】

    # Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用 ...

  3. 搭建和使用Docker私有仓库

    需要注意的是,从Docker Pool下载的镜像文件,与官方镜像文件是完全一致的. 安装Docker之后,可以是使用官方提供的registry镜像来搭建一套本地私有仓库环境:  docker run  ...

  4. 微服务探索之路03篇-docker私有仓库Harbor搭建+Kubernetes(k8s)部署私有仓库的镜像

    ❝ 目录: 微服务探索之路01篇.net6.0项目本地win10系统docker到服务器liunx系统docker的贯通 微服务探索之路02篇liunx ubuntu服务器部署k8s(kubernet ...

  5. 搭建自己的 Docker 私有仓库服务

    关于 Docker 的介绍这里就省了,Docker 在其相关领域的火爆程度不亚于今年汽车行业里的特斯拉,docCloud 甚至把公司名都改成了 Docker, Inc. 好东西总是传播很快,我们现在已 ...

  6. 使用nexus搭建一个maven私有仓库

    使用nexus搭建一个maven私有仓库 大家好,我是程序员田同学.今天带大家搭建一个maven私有仓库. 很多公司都是搭建自己的Maven私有仓库,今天就带大家使用nexus搭建一个自己的私有仓库, ...

  7. Docker私有仓库Registry的搭建验证

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...

  8. Docker私有仓库Registry 搭建

    1. 关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去.但是,有时候,我们的使用场景需要我们拥有一个私有 ...

  9. docker使用registry搭建本地私有仓库

    参考链接来自:http://blog.csdn.net/wangtaoking1/article/details/44180901/ 和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时 ...

随机推荐

  1. 如何在 Ubuntu 上安装 MongoDB

    MongoDB 是一个越来越流行的自由开源的 NoSQL 数据库,它将数据存储在类似 JSON 的灵活文档集中,这与 SQL 数据库中常见的表格形式形成对比. 你很可能发现在现代 Web 应用中使用 ...

  2. 机器学习Label Encoder和One Hot Encoder

    标签编码(Label Encoder) 在本例中第一列是Country, 如果我们要运行任何模型, 数据中不能包含文本 所以要对文本进行处理 接下来,我们从sklearn库中导入LabelEncode ...

  3. FreeSql (十八)导航属性

    导航属性是 FreeSql 的特色功能之一,可通过约定配置.或自定义配置对象间的关系. 导航属性有 OneToMany, ManyToOne, ManyToMany, OneToOne, Parent ...

  4. IOCAutofac与ORMEntityFramwork的联系--单例模式

    在你阅读之前默认你已经理解了IOC.DI.ORM以及autofac和EF的使用 在我最近写项目的时候我在单步调试时偶然发现的一个问题 先说明我的项目使用.NET MVC 三层架构,运用IOC Auto ...

  5. Net Core基于TopShelf程序运行于服务模式

    目录 Net Core基于TopShelf程序运行于服务模式 1 背景 2 优势 2.1 服务模式可设置重启条件 2.2 避免误操作 3.使用 3.1 GUI方式安装Topshelf包 4 配置 5 ...

  6. Docker下kafka学习三部曲之二:本地环境搭建

    在上一章< Docker下kafka学习,三部曲之一:极速体验kafka>中我们快速体验了kafka的消息分发和订阅功能,但是对环境搭建的印象仅仅是执行了几个命令和脚本,本章我们通过实战来 ...

  7. 【第十篇】easyui-datagrid排序 (转)

    本文体验datagrid的排序. □ 思路 当点击datagrid的标题,视图传递给Controller的Form Data类似这样:page=1&rows=10&sort=Custo ...

  8. 具有注册、登陆以及后台管理功能的web开发

    设计一个带有注册.登陆.后台用户管理的网站 使用(Html+Css+JavaScript+Jsp+Servlet+JDBC+JSTL+EL) 工具:Eclipse(NetBeans).Mysql8.0 ...

  9. SpringAop实现公共字段填充

    一.说明 项目中经常会有一些放在缓存中的公共字段需要进行填充,我们知道mybatis-plus很方便地可以实现公共字段填充.在这里我定义了一个字段填充的注解,当我们需要进行数据填充的时候只要在方法上打 ...

  10. JDBC连接时出现的问题总结

    java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more tha ...