首页 > 学院 > 操作系统 > 正文

Maven快速入门(二)

2024-06-28 16:01:06
字体:
来源:转载
供稿:网友

Maven的多模块和继承

多模块:分模块、分项目、统一管理子项目 继承:复用父项目、复用其它项目

多模块解决:将maven项目分解,为了统一管理和开发方便,父项目管理一堆子项目,站在父项目。 继承解决:使用pom配置,为了复用和整合的问题,站在子项目。

多模块:将一个大工程分成几个小的工程便于开发。 继承:多个模块之间有关系,主要是指子模块和父工程之间的继承关系。

概述

多模块:定义一组构建模块的聚集 特点:Maven build 父模块的时候,会自动build子模块,父模块的packageing必须是POM。

继承:复用配置 可继承的元素,子模块可任意重写父模块配置。

多模块和继承的构建

使用eclipse工具进行父子工程构建。

第一步:新建父工程项目(new maven PRoject):打包方式变成了pom。maven的父项目,可以管理子项目,可以被继承。 第二步:建立一个子项目工程(Maven Module),packaging根据类型选择jar或者war。

parent继承:复用父项目,包括坐标,jar各种配置。

<!-- 继承:父项目,可以复用父项目的东西 --> <parent> <groupId>cn.itheima.maven</groupId> <artifactId>mavenprojectparent</artifactId> <version>0.0.1-SNAPSHOT</version> </parent>

modules多模块:用来管理子项目,向下管理

<!-- 多模块(聚合):管理子项目 --> <modules> <module>mavenprojectchild01</module> <module>mavenprojectchild02</module> </modules>

第三步:项目操作: 1.继承:父工程导入jar包,子工程会自动导入父工程导入的jar包。 2.统一操作:只对父工程进行构建操作,就会同时操作管理各个子模块 对父工程进行编译、清理、打包或安装操作。

多模块为了统一管理(聚合),而继承是为了复用。

Maven私服-Nexus

私服介绍

私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件。有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库;否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载。私服一般是公司搭建,内部使用,也可以公开。

私服的优点:减少用户对中央仓库的依赖访问。还可以将私有的项目放到私服中。

Nexus的安装

官网:http://www.sonatype.org/nexus/

目录结构: - nexus-xxx:该目录包含了Nexus运行所需要的文件,如启动脚本、依赖jar包等 - sonatype-work:该目录包含Nexus生成的配置文件、日志文件、仓库文件等

第一个目录是运行Nexus所必需的,而且所有相同版本的Nexus实例所包含的该目录内容都是一样的。 第二个目录不是必须的,在运行的时候会动态创建的,所以需要备份Nexus的时候,默认备份sonatype-work目录就可以。

直接启动: 直接双击console-nexus.bat运行,浏览器中输入http://localhost:8081/nexus/。 通过服务来启动:

Nexus的仓库

仓库的类型(Type),Nexus内置有四种类型:

hosted(宿主仓库):主要用于部署无法从公共仓库获取的构件(如 Oracle 的 JDBC 驱动)以及自己或第三方的项目构件; -一般需要安装到proxy(代理仓库):代理公共的远程仓库;–连接中央仓库、其他私服virtual(虚拟仓库):为了兼容、适配maven1的仓库格式,可动态的将Maven1仓库格式转换为Maven2的仓库格式,即也是为了服务Maven1的格式的仓库数据。group(仓库组):Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库

仓库的格式有两种:

maven2:现在Maven仓库使用的格式。maven1:Maven1格式仓库已经不再使用,除了Virtual类型的仓库外,不要配置该格式。

仓库的策略(Policy)有两种:

Release:发布(版本)Snapshot:快照(版本)

默认情况下内置的几个仓库说明:

Central:代理中央仓库、策略为Release、只会下载和缓存中央仓库中的发布版本构件。Central M1 shadow: 代理中央仓库,策略为Virtual,用于提供中央仓库中M1格式的发布版本的构件镜像仓库Release:策略为Release的宿主仓库、用来部署组织内部的发布版本内容。Snapshot:策略为Snapshot的宿主仓库、用来部署组织内部的快照版本内容。3rd party:策略为Release的宿主仓库类型、用来部署无法从公共仓库获取的第三方发布版本构件、如oracle连接驱动jar包。Apache Snapshot:策略为Snapshot的代理仓库、用来代理ApacheMaven仓库的快照版本构件。Public Repositories:该仓库将上述所有策略为Release的仓库聚合并通过一致的地址提供服务。Public Snapshot Repositories:该仓库将上述所有策略为Snapshot的仓库聚合并通过一致的地址提供服务

Nexus仓库的配置

用户名:admin,密码:admin123登录。

开启远程仓库的索引同步搜索功能,即允许下载远程仓库索引: 点击左边Administration菜单下面的Repositories,找到右边仓库列表中的所有proxy类型的仓库Apache Snapshots和Maven Central,然后依次点击打开仓库详情,下面的configuration选项卡下把Download Remote Indexes修改为true。

经过上述操作以后, Nexus会自动从远程中央仓库下载索引文件, 为了检验索引文件自动下载是否生效,可以切换到Browse Index,在 Browse Index 选项卡下,可以浏览到所有已被索引的构件信息,包括坐标、格式、Maven 依赖的 xml 代码。

添加新的代理仓库

添加第三方远程私服仓库,点击菜单 Add - Proxy Repository

填入一下属性: Repository ID:新仓库唯一标识 Repository Name:新仓库的名字 Remote Storage Location:要代理的远程仓库的地址

添加新的宿主仓库

步骤为Repositories –> Add –> Hosted Repository,在页面的下半部分输入框中填入Repository ID和Repository Name即可,比如分别填入 zfy 和 zfy repostiory,另外把Deployment Policy设置为Allow Redeploy,点击save就创建完成了。

仓库组的管理

将添加的新添加的代理仓库加入 Public Repositories 仓库组。选中 Public Repositories,在 Configuration 选项卡中,将要使用的仓库从右侧 Available Repositories 移到左侧 Ordered Group Repositories,save 保存。

调整顺序,仓库组中的仓库顺序界定了下载构件的遍历顺序,所以,建议将代理的远程中央仓库放到最后,将私服放到它之前,但本地的一些项目放到最前面。

Maven中使用私服

从私服下载构件

在setting.xml配置镜像

用内部仓库镜像远程仓库提高下载速度

<mirrors><mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <!-- * 表示让所有仓库使用该镜像--> <url>内部公共仓库地址</url> </mirror> …可以配置多个。。。 </mirrors>

自己的项目部署到私服

在maven的settings.xml中配置要连接的私服的用户名和密码。 私服的用户名和密码在nexus私服的配置文件夹中配置: sonatype-work/nexus/conf/security.xml 内置帐号:admin/admin123 提示:密码已加密。

<!--正式版发行仓库帐号--><server> <id>releases</id> <username>用户名</username> <passWord>密码</password></server><!--快照版发行仓库帐号--><server> <id>snapshots</id> <username>用户名</username> <password>密码</password></server>

在要发布到私服的项目的pom.xml中配置,如:

<!-- 远程仓库的配置信息:用于发布项目到私服 --> <distributionManagement> <repository> <!-- 此处id必须和settings.xml中的server中配置的一致 --> <id>local-releases</id> <name>Internal Releases</name> <url>http://localhost:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <!-- 此处id必须和settings.xml中的server中配置的一致 --> <id>local-snapshots</id> <name>Internal Snapshots</name> <url>http://localhost:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>

注意事项: 1.id必须和settings.xml中的server元素中的id元素内容一致! 2.url是私服仓库地址。 3.配置文件中不能有中文!

发布到私服:mvn deploy

第三方构件上传到私服-直接在私服操作

第一步:先将普通的jar安装到本地仓库(mvn install命令)—将普通jar转换为maven的构件了。 第二步:切换到服务器管理界面,在3rd party仓库选择Artifact Upload,选择From POM和Select Artifact(s) to Upload 生成 Artifacts


上一篇:[emacs]man mode

下一篇:awk

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表