maven parent的作用(maven的基本原理和使用)
四、maven。。1。需求正式开发,不同的项目组开发不同的项目。
Dao项目被开发并发布到私有服务器。
服务从私有服务器下载dao
2.分析公司在自己的局域网内搭建自己的远程仓库服务器,称为私有服务器。私有服务器是公司里的maven远程仓库。每个员工都在自己的电脑上安装maven软件,并连接到私有服务器。
员工将把他们自己开发的项目打印到jar中并发布到服务器上,其他项目团队将从服务器上下载相关组件。
(jar)
该服务器还充当代理服务器。当服务器上没有jar包时,会自动从互联网中心仓库下载,如下图所示:
3.搭建私有服务器环境下载nexusnexus是一个maven仓库管理器。通过nexus可以建立一个Maven仓库。同时,Nexus还提供了强大的仓库管理功能和组件搜索功能。下载Nexus,
下载地址:http://www。索纳塔。组织/关系/存档/
下载:nexus-2.12.0-01-bundle.zip
安装nexus解压nexus-2.12.0-01-bundle.zip,本教程解压到驱动器F,进入bin目录:
The coal mine administration enters the box directory and executes the installation of nexus.bat
安装成功。检查服务中的nexus服务:
Uninstall nexuscmd and enter the box directory of the relationship, and execute: uninstall nexus.bat
查看窗口服务列表关系已被删除。
启动nexus方法1:
The coal mine administration enters the box directory and executes nexus.bat start
方法二:
直接启动nexus服务。
View the configuration file conf/nexus. properties of the relationship.
# Jetty section
Application port=8081 # Access port configuration of Nexus Application-Host=0.0.0.0 # Relational host monitoring configuration (without modification) Nexus-WebApp=$ {Bundlebased IR}/Nexus # Nexus project directory Nexus-WebApp-Context-Path=/Nexus # Nexus's network access path.
# Nexus section
nexus-work=${bundleBasedir}/./sonatype-work/nexus # nexus仓库目录
runtime=$ { bundle basedir }/nexus/we b-INF # nexus运行程序目录
请访问:
http://localhost:8081/nexus/
使用Nexus内置账号admin/admin123登录:点击右上角的登录,输入你的账号和密码即可登录。
登录成功:
3.5仓库类型关系
查看nexus的仓库:
nexus 的仓库有4 种类型:
1. hosted,宿主仓库,部署自己的jar 到这个类型的仓库,包括releases 和snapshot 两部分,
Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库
2. proxy,代理仓库,用于代理远程的公共仓库,如maven 。。仓库,用户连接。。,。。自动去。。仓库下载jar 包或者插件。
3. group,仓库组,用来合并多个hosted/proxy 仓库,通常我们配置自己的maven 连接仓库组。
4. virtual(虚拟):兼容Maven1 版本的jar 或者插件
nexus 仓库默认在sonatype-work 目录中:
central:代理仓库,代理。。仓库apache-snapshots:代理仓库存储snapshots 构件,代理地址https://repository.apache.org/snapshots/
central-m1:virtual 类型仓库,兼容Maven1 版本的jar 或者插件releases:本地仓库,存储releases 构件。snapshots:本地仓库,
存储snapshots 构件。thirdparty:第三方仓库public:仓库组4. 将项目发布到。。
4.1 需求
企业中多个团队协作开发通常会将一些公用的组件、开发模块等发布到。。供其它团队或模块开发人员使用。
本例子假设多团队分别开发dao、service、web,某个团队开发完在dao 会将dao 发布到。。供service 团队使用,本例子会将dao 工程打成jar 包发布到。。。
上传
上传
maven-dao 工程
。。(服务端) nexus
maven-service 工程
4.2 配置第一步:需要在客户端即部署dao 工程的电脑上配置maven 环境,并修改settings.xml
文件,配置连接。。的用户和密码。 此用户名和密码用于。。校验,因为。。需要知道上传的账号和密码是否和。。中的账号和密码一致。
releasesadminadmin123snapshotsadminadmin123releases 连接发布版本项目仓库
snapshots 连接测试版本项目仓库
第二步: 配置项目pom.xml
配置。。仓库的地址,本公司的自己的jar 包会上传到。。的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release 则上传到。。的release 仓库,
如果版本为snapshot 则上传到。。的snapshot 仓库
releaseshttp://localhost:8081/nexus/content/repositories/releases/snapshotshttp://localhost:8081/nexus/content/repositories/snapshots/注意:pom.xml 这里和settings.xml 配置 对应!
4.3 测试将项目dao 工程打成jar 包发布到。。:
1、首先启动nexus
2、对dao 工程执行deploy 命令
根据本项目pom.xml中version定义决定发布到哪个仓库,如果version定义为snapshot, 执行deploy 后查看nexus 的snapshot 仓库,
如果version 定义为release 则项目将发布到nexus 的release 仓库,本项目将发布到snapshot 仓库:
也可以通过http 方式查看:
5. 从。。下载jar 包5.1 需求
没有配置nexus 之前,如果本地仓库没有,去。。仓库下载,通常在企业中会在局域网内部署一台。。服务器,有了。。本地项目首先去本地仓库找jar,如果没有找到则连接。。从。。下载jar 包,
如果。。没有jar 包。。同时作为代理服务器从。。仓库下载jar 包, 这样做的好处是一方面由。。对公司项目的依赖jar 包统一管理,一方面提高下载速度,
项目连接。。下载jar 包的速度要比项目连接。。仓库的速度快的多。
本例子测试从。。下载dao 工程jar 包。
5.2 管理仓库组nexus中包括很多仓库,hosted 中存放的是企业自己发布的jar包及第三方公司的jar包, proxy 中存放的是。。仓库的jar,
为了方便从。。下载jar 包可以将多个仓库组成一个仓库组,每个工程需要连接。。的仓库组下载jar 包。
打开nexus 配置仓库组,如下图:
上图中仓库组包括了本地仓库、代理仓库等。
5.3 在setting.xml 中配置仓库在客户端的setting.xml 中配置。。的仓库,
由于setting.xml 中没有repositories 的配置标签需要使用profile 定义仓库。
public
Public Repositories
http://localhost:8081/nexus/content/groups/public/
使用profile 定义仓库需要激活才可生效。
dev
配置成功后通过eclipse 查看有效pom,有效pom 是maven 软件最终使用的pom 内容,程序员不直接编辑有效pom,打开有效pom
有效pom 内容如下:
下边的pom 内容中有两个仓库地址,maven 会先从前边的仓库的找,如果找不到jar 包再从下边的找,从而就实现了从。。下载jar 包。
truetruepublicPublic Repositorieshttp://localhost:8081/nexus/content/groups/public/falsecentralCentral Repositoryhttps://repo.maven.apache.org/maven2public5.4 测试从。。下载jar 包Public Repositorieshttp://localhost:8081/nexus/content/groups/public/neverfalsecentralCentral Repositoryhttps://repo.maven.apache.org/maven2测试1:局域网环境或本地网络即可
在service 工程中添加以上配置后,添加dao 工程的依赖,删除本地仓库中dao
工程,同时在eclipse 中关闭dao 工程。 观察控制台:
项目先从本地仓库找dao,找不到从。。找,由于之前执行deploy 将dao 部署到。。中,所以成功从。。下载dao 并在本地仓库保存一份。
如果此时删除。。中的dao,执行update project 之后是否正常? 如果将本地仓库的dao 和。。的dao 全部删除是否正常? 测试2:需要互联网环境
在项目的pom.xml 添加一个依赖,此依赖在本地仓库和。。都不存在,maven 会先从本地仓库找,本地仓库没有再从。。找,。。没有再去。。仓库下载,
jar 包下载成功在。。、 本地仓库分别存储一份。
五、 把第三方jar 包放入本地仓库或。。1. 导入本地库随便找一个jar 包测试,可以先CMD 进入到jar 包所在位置,
运行mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37
-Dfile=fastjson-1.1.37.jar -Dpackaging=jar
2. 导入。。需要在maven 软件的核心配置文件settings.xml 中配置第三方仓库的server 信息
thirdparty
admin
admin123
才能执行一下命令
mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37
-Dpackaging=jar -Dfile=fastjson-1.1.37.jar
-Durl=http://localhost:8081/nexus/content/repositories/thirdparty/
-DrepositoryId=thirdparty
3. 参数说明DgroupId 和DartifactId 构成了该jar 包在pom.xml 的坐标,项目就是依靠这两个属性定位。 自己起名字也行。
Dfile 表示需要上传的jar 包的绝对路径。
Durl 。。上仓库的位置,打开nexus——repositories 菜单,可以看到该路径。
DrepositoryId 服务器的表示id,在nexus 的configuration 可以看到。
Dversion 表示版本信息,
关于jar 包准确的版本: 包的名字上一般会带版本号,如果没有那可以解压该包,会发现一个叫MANIFEST.MF 的文件,
这个文件就有描述该包的版本信息。
比如Specification-Version: 2.2 可以知道该包的版本了。 上传成功后,在nexus 界面点击3rd party 仓库可以看到这包