CI/CD学习笔记--Maven 私服 Nexus3 安装

Maven和Nexus3 简介

Maven在这里插入图片描述

Maven 这个单词来自于意第绪语(犹太语),意为知识的积累。
Maven 是一款由 Apache 软件基金会开发的,用来管理项目的构建,生成报告和文档的 Java 项目管理工具,它采用一种被称之为Project Object Model(POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中, 通过该文件Maven可以管理项目的整个生命周期,包括清除、编译,测试,报告、打包、部署等。

我们一直在不停地寻找避免重复的方法。设计的重复、编码的重复、文档的重复,当然还有构建的重复。Maven 最大化地消除了构建的重复,抽象了构建生命周期,并且为绝大部分的构建任务提供了已实现的插件,我们不再需要定义过程,甚至不需要再去实现这些过程中的一些任务。

最简单的例子是测试,我们没必要告诉 Maven 去测试,更不需要告诉 Maven 如何运行测试,只需要遵循 Maven 的约定编写好测试用例,当我们运行构建的时候,这些测试便会自动运行。

想象一下,Maven 抽象了一个完整的构建生命周期模型,这个模型吸取了大量其他的构建脚本和构建工具的优点,总结了大量项目的实际需求。如果遵循这个模型,可以避免很多不必要的错误,可以直接使用大量成熟的 Maven 插件来完成我们的任务(很多时候我们可能都不知道自己在使用 Maven 插件)。此外,如果有非常特殊的需求,我们也可以轻松实现自己的插件。

Maven 还有一个优点,它能帮助我们标准化构建过程。在 Maven 之前,十个项目可能有十种构建方式。有了 Maven 之后,所有项目的构建命令都是标准化。

所以,Maven 作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具。

目前Apache下绝大多数项目都已经采用Maven进行管理. 而Maven本身还支持多种插件, 可以方便更灵活的控制项目, 开发人员的主要任务应该是关注商业逻辑并去实现它, 而不是把时间浪费在如何在不同的环境中去依赖jar包,项目部署等。

Maven和ant都是软件构建工具(软件管理工具),Maven比Ant更加强大,已经取代了ant,jar包的声明式依赖描述。Maven有jar包的仓库。

Nexus3

在这里插入图片描述

Nexus 是Maven仓库管理器,如果你使用Maven,你可以从Maven中央仓库 下载所需要的构件(artifact),但这通常不是一个好的做法,你应该在本地架设一个私有服务器,在代理远程仓库的同时维护本地仓库,以节省带宽和时间。

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。如果没有maven私服,则需要用手动打jar包的方式添加依赖。

Nexus就可以满足这样的需要。此外,他还提供了强大的仓库管理功能,构件搜索功能,它基于REST,友好的UI是一个extjs的REST客户端,它占用较少的内存,基于简单文件系统而非数据库。这些优点使其日趋成为最流行的Maven仓库管理器。
在这里插入图片描述

安装 Maven

现在最方便的方式是通过Yum install的方式安装,并且会安装SDK等依赖。我们选用了CentOS 8.4-2105.

查看YUM Maven

[root@maven ~]# yum search maven
CentOS Linux 8 - AppStream                                              2.3 MB/s | 8.1 MB     00:03
CentOS Linux 8 - BaseOS                                                 1.6 MB/s | 3.6 MB     00:02
CentOS Linux 8 - Extras                                                 6.3 kB/s | 9.8 kB     00:01
===================================== Name Exactly Matched: maven ======================================
maven.noarch : Java project management and project comprehension tool
==================================== Name & Summary Matched: maven =====================================
directory-maven-plugin-javadoc.noarch : Javadoc for directory-maven-plugin
maven-lib.noarch : Core part of Maven
maven-resolver-api.noarch : Maven Artifact Resolver API
maven-resolver-connector-basic.noarch : Maven Artifact Resolver Connector Basic
maven-resolver-impl.noarch : Maven Artifact Resolver Implementation
maven-resolver-spi.noarch : Maven Artifact Resolver SPI
maven-resolver-transport-wagon.noarch : Maven Artifact Resolver Transport Wagon
maven-resolver-util.noarch : Maven Artifact Resolver Utilities
maven-shared-utils.noarch : Maven shared utility classes
maven-wagon-file.noarch : file module for maven-wagon
maven-wagon-http.noarch : http module for maven-wagon
maven-wagon-http-shared.noarch : http-shared module for maven-wagon
maven-wagon-provider-api.noarch : provider-api module for maven-wagon
========================================= Name Matched: maven ==========================================
directory-maven-plugin.noarch : Establish locations for files in multi-module builds

安装

[root@maven ~]# yum install -y maven
Last metadata expiration check: 0:04:24 ago on Thu 15 Jul 2021 08:54:02 PM PDT.
Dependencies resolved.
========================================================================================================
Package Arch Version Repo Size
========================================================================================================
Installing:
maven noarch 1:3.5.4-5.module_el8.0.0+39+6a9b6e22 appstream 27 k
Installing dependencies:
aopalliance noarch 1.0-17.module_el8.0.0+39+6a9b6e22 appstream 17 k

Transaction Summary
========================================================================================================
Install 53 Packages
Total download size: 54 M
Installed size: 172 M
Downloading Packages:
(1/53): aopalliance-1.0-17.module_el8.0.0+39+6a9b6e22.noarch.rpm 55 kB/s | 17 kB 00:00
(2/53): apache-commons-cli-1.4-4.module_el8.0.0+39+6a9b6e22.noarch.rpm 189 kB/s | 74 kB 00:00

(53/53): java-1.8.0-openjdk-headless-1.8.0.292.b10-1.el8_4.x86_64.rpm 2.7 MB/s | 34 MB 00:12

Total 3.7 MB/s | 54 MB 00:14
warning: /var/cache/dnf/appstream-a520ed22b0a8a736/packages/aopalliance-1.0-17.module_el8.0.0+39+6a9b6e22.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID 8483c65d: NOKEY
CentOS Linux 8 - AppStream 1.6 MB/s | 1.6 kB 00:00
Importing GPG key 0x8483C65D:
Userid : “CentOS (CentOS Official Signing Key) security@centos.org
Fingerprint: 99DB 70FA E1D7 CE22 7FB6 4882 05B5 55B3 8483 C65D
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Running scriptlet: copy-jdk-configs-3.7-4.el8.noarch 1/1
Running scriptlet: java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64 1/1
Preparing : 1/1
Installing : javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch 1/53
Installing : publicsuffix-list-20180723-1.el8.noarch 2/53

53/53
Running scriptlet: maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch 53/53
Verifying : aopalliance-1.0-17.module_el8.0.0+39+6a9b6e22.noarch 1/53
Verifying : apache-commons-cli-1.4-4.module_el8.0.0+39+6a9b6e22.noarch 2/53

Verifying : publicsuffix-list-20180723-1.el8.noarch 53/53
Installed products updated.
Installed:
aopalliance-1.0-17.module_el8.0.0+39+6a9b6e22.noarch
apache-commons-cli-1.4-4.module_el8.0.0+39+6a9b6e22.noarch
apache-commons-codec-1.11-3.module_el8.0.0+39+6a9b6e22.noarch
apache-commons-io-1:2.6-3.module_el8.0.0+39+6a9b6e22.noarch
apache-commons-lang3-3.7-3.module_el8.0.0+39+6a9b6e22.noarch
apache-commons-logging-1.2-13.module_el8.0.0+39+6a9b6e22.noarch
atinject-1-28.20100611svn86.module_el8.0.0+39+6a9b6e22.noarch
cdi-api-1.2-8.module_el8.0.0+39+6a9b6e22.noarch
copy-jdk-configs-3.7-4.el8.noarch
geronimo-annotation-1.0-23.module_el8.0.0+39+6a9b6e22.noarch
glassfish-el-api-3.0.1-0.7.b08.module_el8.0.0+39+6a9b6e22.noarch
google-guice-4.1-11.module_el8.0.0+39+6a9b6e22.noarch
guava20-20.0-8.module_el8.0.0+39+6a9b6e22.noarch
hawtjni-runtime-1.16-2.module_el8.0.0+39+6a9b6e22.noarch
httpcomponents-client-4.5.5-4.module_el8.0.0+39+6a9b6e22.noarch
httpcomponents-core-4.4.10-3.module_el8.0.0+39+6a9b6e22.noarch
jansi-1.17.1-1.module_el8.0.0+82+8ee6c375.noarch
jansi-native-1.7-7.module_el8.0.0+39+6a9b6e22.x86_64
** java-1.8.0-openjdk-1:1.8.0.292.b10-1.el8_4.x86_64
java-1.8.0-openjdk-devel-1:1.8.0.292.b10-1.el8_4.x86_64
java-1.8.0-openjdk-headless-1:1.8.0.292.b10-1.el8_4.x86_64
javapackages-filesystem-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch
javapackages-tools-5.3.0-1.module_el8.0.0+11+5b8c10bd.noarch**
jboss-interceptors-1.2-api-1.0.0-8.module_el8.0.0+39+6a9b6e22.noarch
jcl-over-slf4j-1.7.25-4.module_el8.0.0+39+6a9b6e22.noarch
jsoup-1.11.3-3.module_el8.0.0+39+6a9b6e22.noarch
lksctp-tools-1.0.18-3.el8.x86_64
maven-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch
maven-lib-1:3.5.4-5.module_el8.0.0+39+6a9b6e22.noarch
maven-resolver-api-1:1.1.1-2.module_el8.0.0+39+6a9b6e22.noarch
maven-resolver-connector-basic-1:1.1.1-2.module_el8.0.0+39+6a9b6e22.noarch
maven-resolver-impl-1:1.1.1-2.module_el8.0.0+39+6a9b6e22.noarch
maven-resolver-spi-1:1.1.1-2.module_el8.0.0+39+6a9b6e22.noarch
maven-resolver-transport-wagon-1:1.1.1-2.module_el8.0.0+39+6a9b6e22.noarch
maven-resolver-util-1:1.1.1-2.module_el8.0.0+39+6a9b6e22.noarch
maven-shared-utils-3.2.1-0.1.module_el8.0.0+39+6a9b6e22.noarch
maven-wagon-file-3.1.0-1.module_el8.0.0+39+6a9b6e22.noarch
maven-wagon-http-3.1.0-1.module_el8.0.0+39+6a9b6e22.noarch
maven-wagon-http-shared-3.1.0-1.module_el8.0.0+39+6a9b6e22.noarch
maven-wagon-provider-api-3.1.0-1.module_el8.0.0+39+6a9b6e22.noarch
plexus-cipher-1.7-14.module_el8.0.0+39+6a9b6e22.noarch
plexus-classworlds-2.5.2-9.module_el8.0.0+39+6a9b6e22.noarch
plexus-containers-component-annotations-1.7.1-8.module_el8.0.0+39+6a9b6e22.noarch
plexus-interpolation-1.22-9.module_el8.0.0+39+6a9b6e22.noarch
plexus-sec-dispatcher-1.4-26.module_el8.0.0+39+6a9b6e22.noarch
plexus-utils-3.1.0-3.module_el8.0.0+39+6a9b6e22.noarch
publicsuffix-list-20180723-1.el8.noarch
sisu-inject-1:0.3.3-6.module_el8.0.0+39+6a9b6e22.noarch
sisu-plexus-1:0.3.3-6.module_el8.0.0+39+6a9b6e22.noarch
slf4j-1.7.25-4.module_el8.0.0+39+6a9b6e22.noarch
ttmkfdir-3.0.9-54.el8.x86_64
tzdata-java-2021a-1.el8.noarch
xorg-x11-fonts-Type1-7.5-19.el8.noarch
Complete!

查看Maven版本

[root@maven ~]# mvn -version
Apache Maven 3.5.4 (Red Hat 3.5.4-5)
Maven home: /usr/share/maven
Java version: 1.8.0_292, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.292.b10-1.el8_4.x86_64/jre
Default locale: en_US, platform encoding: UTF-8

使用下载安装maven(另一种方法)

[root@maven ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz

解压安装

[root@maven ~]# tar xf apache-maven-3.5.4-bin.tar.gz -C /usr/local/
[root@maven ~]# cd /usr/local/
[root@maven ~]#ln -s apache-maven-3.5.4/ maven

安装 java 环境

[root@maven ~]# tar xf jdk-8u201-linux-x64.tar.gz -C /usr/local/
[root@maven ~]# cd /usr/local/
[root@maven ~]# ln -s jdk1.8.0_201/ java

添加环境变量

[root@maven ~]# vim /etc/profile
添加如下内容(这里的MAVEN_HOME需要改为你自己的maven解压目录):

JAVA_HOME=/usr/local/java
export MAVEN_HOME=/usr/local/maven
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=.: J A V A H O M E / l i b : JAVA_HOME/lib: JAVAHOME/lib:JRE_HOME/lib: C L A S S P A T H e x p o r t P A T H = CLASSPATH export PATH= CLASSPATHexportPATH=JAVA_HOME/bin: J R E H O M E / b i n : JRE_HOME/bin: JREHOME/bin:MAVEN_HOME/bin:$PATH

重载环境变量

[root@maven ~]# source /etc/profile

安装Nenux3

下载

专业版的nexus收费,我们可以下载开源版 Nexus OSS,下载地址为 https://www.sonatype.com/download-oss-sonatype
首先要注册一个账号,然后转到下载页面
在这里插入图片描述

解压

[root@maven ~]# tar -zxf nexus-3.32.0-03-unix.tar.gz
[root@maven ~]# ll
total 197708
-rw-------. 1 root root 1192 Jul 13 02:57 anaconda-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Desktop
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Documents
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Downloads
-rw-r–r--. 1 root root 1419 Jul 13 03:01 initial-setup-ks.cfg
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Music
drwxr-xr-x. 10 root root 181 Jul 16 06:44 nexus-3.32.0-03
-rw-r–r--. 1 root root 202443414 Jul 16 06:40 nexus-3.32.0-03-unix.tar.gz
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Pictures
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Public
drwxr-xr-x. 3 root root 20 Jul 16 06:44 sonatype-work
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Templates
drwxr-xr-x. 2 root root 6 Jul 15 20:52 Videos

安装

[root@maven ~]# cd nexus-3.32.0-03/
[root@maven nexus-3.32.0-03]# cd bin/
[root@maven bin]# ./nexus start
WARNING: ************************************************************
WARNING: Detected execution as “root” user. This is NOT recommended!
WARNING: ************************************************************
Starting nexus

查看安装情况

Nexus3占用8081端口

[root@maven bin]# lsof -i:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 3216 root 763u IPv4 71681 0t0 TCP *:tproxy (LISTEN)

初始用户名admin,密码:/root/sonatype-work/nexus3/admin.password

[root@maven bin]# cat /root/sonatype-work/nexus3/admin.password
30c2e933-b137-4a04-b6e6-21cbb3fcbdbc

在这里插入图片描述
这样就安装好了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值