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作为私服,提供强大的仓库管理、构件搜索等功能。Nexus内部使用Jetty作为服务器,界面用extjs开发的。

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

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

c). 验证使用
访问地址:http://localhost:8081/nexus(默认账户:admin 密码:admin123)
图片名称

2.3.Nexus仓库类型

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

Nexus仓库文件保存在sonatype-work路径下,具体路径为${sonatype-work}/nexus/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数据库驱动等

猜你喜欢

转载自www.cnblogs.com/liuyitan/p/12995689.html