Maven篇----01 简介和私服

Posted 雨 燕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven篇----01 简介和私服相关的知识,希望对你有一定的参考价值。

1. Maven简介

1.1. 简述

  Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。
  Maven是优秀的依赖管理工具,能轻松地解决繁杂的Java类库的依赖关系。
  Maven是标准化的构建流程。Maven暴露了一组一致、简洁的操作接口,能帮助团队成员从原来的高度自定义的、复杂的构建系统中解脱出来,使用Maven现有的成熟的、稳定的组件也能简化构建系统的复杂度。
  Maven是项目信息管理工具,能有效管理原本分散在项目中各个角落的项目信息,包括项目描述、开发者列表、版本控制系统地址等。另外还能通过Maven自动生成项目站点、项目文档、测试报告等非常具有价值的项目信息。

1.2. Maven实现的核心价值

1.简单:使用简洁、一致的操作接口,进行快速的项目构建,随时随地的地从源代码构建出最终的产品。
2.促进团队成员的交流与反馈:与版本控制系统结合后,所有人都能执行最新的构建并快速得到反馈。自动生成的项目报告也能帮助成员了解项目的状态,促进团队的交流。
3.测试驱动开发(TDD):测试是Maven生命周期中最重要的组成部分之一,并且Maven有现成的成熟插件支持业界流行的测试框架,如Junit和TestNG。
4.持续集成(CI):CI的前提是源码管理系统和构建系统,使用Maven后,持续集成会变得更加方便。
5.富有信息的工作区:使用Maven发布的项目报告站点,并配置你需要的项目报告,如测试覆盖率报告,都能帮你把信息推送到开发者眼前。

1.3. Maven坐标

在开发Maven项目的时候,需要为其定义适当的坐标,这是强制要求的。在这个基础上,其他Maven项目才能应用该项目生成的构件。 
Maven坐标详解:
 groupId:组织标识(包名)
 artifactId:项目名称
 version:项目的当前版本
 packaging:项目的打包方式,最为常见的jar和war两种,默认jar

2. Maven仓库

Maven 仓库能帮助我们管理构件(主要是JAR),分两类:本地仓库和远程仓库。
  本地仓库,缺省地址为${user.home}/.m2/repository(即一个用户对应拥有一个本地仓库)。在Maven主目录下修改setting.xml配置可以修改本地仓库地址。
  而远程仓库又分为中央仓库、其他远程仓库和私服(私有服务器)。中央仓库是由Maven社区官方提供的,其中包含了大量常用的库。社区提供了一个 URL。用于搜索所有可以获取的代码库。

2.1.私服简介

  私服是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的用户使用。当Maven需要下载构件的时候,它从私服请求,如果私服上不存在该构件,则从外部远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。
  私服的好处:
a、节省自己的外网带宽
b、加速Maven构建
c、部署自己内部的第三方构件
d、提高稳定性,增强控制
e、降低中央仓库的负荷。
  Nexus作为私服,提供强大的仓库管理、构件搜索等功能。 The world’s only repository manager with FREE support for popular formats.
  Nexus Repository是以Java和javascript为主,实现的一个包含前端与后台的Web服务。 后台方面,它采用Jetty作为应用服务器、Karaf作为OSGi容器、OrientDB作为数据库。前端方面,它使用Swagger UI作为框架,是一个单页面Web App。

2.2.私服安装

a). 准备包
Nexus-2.11.4-01-bundle: 下载地址
JDK 1.8版本: 配置好环境变量,注意得是1.8版本
Apache Maven 3.5.4

b). 安装

# tar -zvxf nexus-2.11.4-01-bundle.tar.gz 
# mv nexus-2.11.4-01-bundle /data/nexus/nexus
# cd /data/nexus/nexus/bin
# ./nexus start

注意:默认不能用root用户启动Nexus

c). 验证使用
访问地址:http://localhost:8081/nexus(默认账户:admin 密码:admin123)
私服默认镜像地址为:http://centos:8081/nexus/content/groups/public/
Nexus Repositories

2.3.Nexus仓库说明

  Nexus默认内置了很多仓库,可划分为4种不同类型:hosted(宿主仓库) 内部项目的发布仓库;proxy(代理仓库) 用于代理远程的公共仓库;group(仓库组);virtual(虚拟仓库)。

注意:如果在hosted和proxy有同名的包(这是需要避免的),在通过group下载时,默认查找优先级如下。最新版本 > hosted > proxy

  Nexus会创建两个目录:一个目录包含运行环境及应用,为nexus;一个目录包含所有的配置和数据,为sonatype-work/nexus。升级nexus时只需要替换nexus目录,保留sonatype-work/nexus目录下所有配置和仓库。

2.4.Nexus仓库目录

Nexus工作目录在Nexus同级目录下,路径为${sonatype-work}/nexus/,目录详细说明如下:

nexus
├── backup                  如果创建了定时备份配置文件的任务,该目录会定期产生包含了配置文件快照的ZIP压缩文件。每个压缩包都包含了conf/目录。
├── conf                    该目录包含了所有配置。管理着仓库列表、日志配置,以及安全设置。
│   ├── capabilities.xml    进一步的Smart Proxy后端配置
│   ├── logback-nexus.xml   日志配置文件。用于定制日志信息的细节、频率,或者将日志输出到自己定制的输出源,配置在logback-nexus.xml文件中。
│   ├── logback.properties
│   ├── logback.xml         
│   ├── lvo-plugin.xml      包含最新版本插件的配置。该xml文件存储了仓库管理用于查询检查更新版本的属性文件的位置。
│   ├── nexus.xml           该文件维护着仓库的列表以及所有服务器层面的配置,例如STMP配置、安全方面的、仓库组、targets、路径映射等等。
│   ├── security-configuration.xml      总体的安全配置
│   ├── security.xml        用户及权限的安全配置
├── db                      如果开启了相关功能,将会存储用户token相关信息。
├── felix-cache             存储OSGiframework Apache Felix的缓存,该框架用于仓库管理的插件体系。
├── health-check            存放缓存了的健康检查报告,报告由仓库健康检查插件产生。
├── indexer                 包括了所有管理下的仓库及仓库组的索引。索引是一个全文搜索引擎,用于搜索和索引Maven仓库。仓库管理为所有仓库维护着一个本地索引,也可以从远程仓库下载索引。
├── logs                    目录下存放着nexus.log文件。该文件包含了一个仓库管理运行实例等信息。
├── nexus.lock
├── nuget                   Containsthe database supporting queries against NuGet repositories used for .NETpackage support.
├── plugin-repository       该目录包含了所有第三方安装的插件
├── storage
│   ├── apache-snapshots    (proxy-代理仓库),查找Apache项目的快照版本的仓库,地址:https://repository.apache.org/snapshots/
│   ├── central             (proxy-代理仓库),代理中央仓库,地址:http://repo1.maven.org/maven2/
│   ├── central-m1          (virtual-虚拟仓库),兼容Maven1 版本的jar或者插件
│   ├── codehaus-snapshots  (proxy-代理仓库),查找codehaus项目的快照版本的仓库
│   ├── public              (group-仓库组)
│   ├── releases            (hosted-宿主仓库),存储公司内部发布版本releases构件。
│   ├── snapshots           (hosted-宿主仓库),存储公司内部测试版本snapshots构件。
│   ├── thirdparty          (hosted-宿主仓库),发布第3方jar包的仓库,如oracle数据库驱动等
└── timeline                存储着仓库管理用来存储事件及其他信息以支持内部操作的索引。用户界面通过系统展示这些内容。

目录结构:

DevOps工具系列-认识Maven

Maven篇----01 简介&Maven私服

Maven篇----02 Nexus私服管理

Maven篇----03 私服配置&使用

Maven篇----04 mvn常用命令

Maven篇----05 Nexus3私服管理

Maven篇----06 Nexus3中RestApi使用

Maven篇----07 如何将普通java项目转换为maven项目

以上是关于Maven篇----01 简介和私服的主要内容,如果未能解决你的问题,请参考以下文章

部署Maven与Nexus(私服)

maven 搭建私服

持续集成篇-Maven私有库和本地库的安装与配置Sonatype Nexus + Maven

nexus搭建maven私服及私服jar包上传和下载

Linux 搭建 Maven私服Nexus 3.20.1

linux学习:持续集成篇--Maven私有库和本地库的安装与配置-03