Maven简介和Maven私服
更多精彩技术分享请浏览本人博客:https://blog.****.net/wohiusdashi
目录
1. Maven简介
1.1. 简述
1.2. Maven实现的核心价值
1.3. 定义与缩略语
1.4. 项目构建
1.5. 依赖管理
1.6. maven目录说明
1.7. maven坐标
2. Maven私服
2.1.私服简介
2.2.仓库简介
2.3.私服配置
2.4.将本地项目发布到私服
2.5.查看私服仓库
1. MAVEN简介
1.1. 简述
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
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. 定义与缩略语
名称 含义
TDD test drive develop
POM project object model
CI continuous integration
1.4. 项目构建
项目构建是一个项目从编写源代码到编译、测试、运行、打包、部署、运行的过程。
清理阶段对应maven的命令:clean,清理输出的class文件。
编译阶段对应maven的命令:compile,将java代码编译成class文件。
打包阶段对应maven的命令:package,工程打成jar包、war包。
1.5. 依赖管理
什么是依赖?一个java项目可能要使用一些第三方的jar包才可以运行,那边我们说这个java项目依赖了这些第三方的jar包。
什么是依赖管理?maven依赖管理就是统一管理jar包之间的依赖关系。
1.6. maven目录说明
1.7. maven坐标
在平面几何中坐标(x,y)可以标识平面中唯一的一点。在我们开发Maven项目的时候,需要为其定义适当的坐标,这是Maven强制要求的。在这个基础上,其他Maven项目才能应用该项目生成的构件。
Maven坐标详解:
groupId:组织标识(包名)
artifactId:项目名称
version:项目的当前版本
packaging:项目的打包方式,最为常见的jar和war两种,默认jar
样例:
2. MAVEN私服
2.1. 私服简介
私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的用户使用。当Maven需要下载构件的时候,它从私服请求,如果 私服上不存在该构件,则从外部远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。
私服的好处:
a、节省自己的外网带宽
b、加速Maven构建
c、部署自己内部的第三方构件
d、提高稳定性,增强控制
e、降低*仓库的负荷。
2.2. 仓库简介
如上图所示:
对于Maven来说,仓库只分为两类:本地仓库和远程仓库。
当Maven根据坐标寻找构件的时候,它首先会查看本地仓库,如果 本地仓库存在此构件,则直接使用;如果本地仓库不存在此构件,Maven就会去远程仓库查找,发现需要的构件,下载到本地仓库再使用。如果本地仓库和远程仓库都没有,Maven就会报错。
2.3. 私服配置
2.3.1、配置镜像地址
在settings.xml 文件的 mirrors 内添加以下镜像地址
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/repository/maven-public/</url>
</mirror>
2.3.2、配置认证信息
Nexus的仓库对于匿名用户是只读的。为了能够部署构件,还需要在setting.xml中的servers配置认证信息。
<server>
<id>nexus_release</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus_snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
2.3.3、配置Profile
在profiles内添加以下Profile 配置
<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>
2.3.4、配置activeProfile
在settings内添加以下配置
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
2.3.5、IDEA配置maven
打开IDEA,按 Ctrl + Alt + S 打开配置界面,在搜索栏中输入maven找到maven配置位置,如下图:
2.3.6、配置自动部署构件
在pom.xml 中的 project 内添加自动部署构件配置
<distributionManagement>
<repository>
<id>nexus_release</id>
<name>release</name>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus_snapshots</id>
<name>snapshots</name>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
2.4. 将本地maven项目发布到私服
在IDEA中打开maven菜单,双击deploy按钮
如下图:
2.5. 查看私服仓库
2.5.1、在浏览器中打开 http://localhost:8081/ ,点击左边的Browser按钮,再点击右边的Maven-public ,如下图:
2.5.2、在右边的目录中找到刚刚发布的项目,如我发布的为NexusTest
2.5.3、点击左边的Jar文件可以在右边看到相应的依赖地址,可以添加pom.xml文件
中下载相应的依赖,如下图:
更多精彩技术分享请浏览本人博客:https://blog.****.net/wohiusdashi