一小时教你学会 Maven 项目的构建与管理(3)

/ maven / 没有评论 / 467浏览

Maven翻译成中文是“专家、内行”。Maven是Apache组织中一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理的优秀工具。

-----------------来自小马哥的故事

xxx ## 用 nexus 搭建 Maven 私服 ##

Nexus下载地址:http://www.sonatype.org/nexus/archived/

Nexus安装启动与使用

公司内部大部分人的电脑不能访问公网,不能从maven的中央仓库下载依赖,因此找一台有公网权限的机器搭建nexus私服,其他项目组人员连接到这个私服上即可。1.节省了下载jar包依赖的过程,不必每个人都去下载jar包的依赖

软件准备:jdk1.7、maven-3.5.0、Nexus 2.12.0-01

Nexus 2.12.0-01下载

Nexus 2.12.0-01下载

Windows平台下载zip格式 下载nexus-2.12.0-01-bundle.zip解压到本地磁盘

D:\develop\nexus\nexus-2.12.0-01

在D:\develop\nexus\nexus-2.12.0-01\bin\jsw目录下有很多不同的操作系统版本,我的系统是Win7 64位,选择windows-x86-64目录。

windows-x86-64目录说明

windows-x86-64目录说明

console-nexus.bat:命令行方式启动nexus服务器,窗口关闭不会注册为windows服务

install-nexus.bat:将nexus安装成windows服务,开机时自动启动

start-nexus.bat:启动nexus服务,也可以直接在管理-服务中手动启动nexus服务

stop-nexus.bat:停止nexus服务

uninstall-nexus.bat:卸载nexus服务

wrapper.exe:

配置环境变量

NEXUS_HOME= D:\develop\nexus\nexus-2.12.0-01

Path= ;%NEXUS_HOME%\bin\jsw\windows-x86-64

上述步骤成功后,nexus即安装成功,启动服务,在浏览器中访问

http://localhost:8081/nexus/

默认的用户名是 admin 密码是 admin123

本地Maven私服

到此nexus安装成功。

Nexus用户管理

选择Security-Users添加用户User ID:feiyue 密码:feiyue

Nexus用户管理

填写基本信息,添加角色,选择Nexus Administrator Role管理员角色。

Nexus用户管理1

为Nexus配置代理服务器

如果机器通过配置代理才能访问外网,Nexus可以配置代理服务器,选择Administration-Servers,找到如下配置,填写代理信息。 Nexus配置代理服务器

如果Nexus私服所在机器可以直接访问外网,则可以省略这一步 。

配置repository

在Views/Reposities中选择Reposities进行配置

Nexus可以配置3种类型的仓库,分别是proxy、hosted、group

Proxy:远程仓库的代理,比如nexus中配置了一个中央仓库的proxy,当用户向这个proxy请求一个 artifact时,proxy现在本地查找、如果找不到就到远程的中央仓库下载,起到了一个中转的作用。

配置中央库proxy

需要做的就是把Download Remote Indexes改为true,这样nexus才会从central repository下载索引,才能在nexus中使用artifact search的功能。

配置中央库proxy

Hosted:宿主仓库,用户可以把自己的一些构件部署到hosted中,也可以手动上传到hosted中。比如Oracle的驱动程序ojdbc6.jar在中央仓库找不到,就需要手工上传到hosted中。

配置hosted repository:一般会配置3个hosted repository,分别是3rd party、Snapshots、Releases,分别用来保存第三方jar(典型的比如ojdbc6.jar),项目组内部的快照、项目组内部的发布版

只是Deployment Policy这个选项,一般Snapshots会配置成允许,而Releases和3rd party会设置为禁止

配置中央库proxy

Group:仓库组,在maven中没有这个概念,是nexus特有的。目的是将上述多个仓库聚合,对用户暴露统一的地址,用户就不必在pom中配置多个地址了,只要统一配置group即可。

配置group repository

group其实是一个虚拟的仓库,通过对实体仓库(proxy、hosted)进行聚合,对外暴露一个统一的地址 ,注意放到左边的仓库,才是会被聚合的仓库 配置中央库proxy

仓库搜索服务

常见的几个功能强大的公共Maven仓库搜索服务。

Sonatype Nexus

地址:https://repository.sonatype.org/

Nexus是当前最流行的开源Maven仓库管理软件,提供了关键字搜索、类名搜索、坐标搜索、校验等功 能。

Mvnrepository

地址:http://mvnrepository.com/

界面友好,提供基于关键字的搜索、构件下载、依赖声明代码片段。

中央仓库检索服务

地址:http://search.maven.org/

多模块项目构建实战

本章节给出一个含有父项目parent以及一个多模块项目的空框架做为一个maven项目构建的一个实例,该项目的源码我放到了了github上:

github地址:https://github.com/liangpengju/maven_dev

框架中只是展示Maven多模块项目构建的一种方式,没有具体的代码实现,后续有时间会给出一个demo,这里仅供参考交流。

包括了2个项目,一个是parent聚合项目,另外一个是后台管理分模块分层的项目,结构如下图所示。

多模块项目构建实战

maven_dev中包含父聚合项目gseem-parent,没有实际的内容,主要是pom.xml文件中集中定义依赖版本号、依赖包管理、插件管理、插件等可以继承的元素。

gseem-manage是一个多模块的聚合项目,包括4个子模块,parent都是gseem-manage

gseem-manage-pojo是项目实体类模块,打包方式为jar

gseem-manage-mapper是项目数据库操作dao模块,对应于mybatis的mapping中的xml文件,打包方式为jar,依赖于gseem-manage-pojo模块

gseem-manage-service是项目业务逻辑服务模块,包括接口和实现,打包方式为jar,依赖于gseem-manage-mapper模块

gseem-manage-web是项目的静态资源、jsp动态页面模块,包括接口和实现,打包方式为jar,依赖于gseem-manage-service模块

这个项目框架做到了依赖库的统一版本管理,分层代码的复用等。

总结

Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理的优秀工具。 本文主要从以下几个方面来对Maven工具的使用进行了讲解:

█ Maven基础环境配置与Maven常用的基本命令。

█ Maven相关的核心概念理论:概念模型、仓库、坐标、依赖管理、聚合与继承。

█ 4种Maven项目的创建方式:手动创建、命令行、Eclipse IDE、Idea IDE.

█ POM文件常用配置解析与Setting文件常用配置解析。

█ 使用Nexus搭建Maven私服与仓库搜索服务。

█ 多模块项目构建实战。

Maven还有很多其他的功能,可以后续进行探讨。