前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一小时教你学会 Maven 项目的构建与管理(3)

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

作者头像
IT小马哥
发布2020-03-18 12:48:56
6070
发布2020-03-18 12:48:56
举报
文章被收录于专栏:Java TaleJava Tale

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

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


## 用 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下载

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目录说明

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

到此nexus安装成功。

Nexus用户管理

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

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

为Nexus配置代理服务器

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

如果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的功能。

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会设置为禁止

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

配置group repository

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

仓库搜索服务

常见的几个功能强大的公共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还有很多其他的功能,可以后续进行探讨。

本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2017/11/23 09:23

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nexus安装启动与使用
    • Nexus 2.12.0-01下载
      • windows-x86-64目录说明
        • 配置环境变量
          • Nexus用户管理
            • 为Nexus配置代理服务器
              • 仓库搜索服务
              • 多模块项目构建实战
                • 总结
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档