这里写目录标题
Maven详解
Maven是Apache基金会下一个跨平台的项目管理工具,服务于Java项目的创建、项目信息管理和依赖管理
作用
- 创建项目
- 引入依赖jar文件
- 打包发布项目
Maven仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VEytDQHE-1618907512599)(C:\Users\郭念念\AppData\Roaming\Typora\typora-user-images\image-20210316102500749.png)]
- 本地仓库:开发人员个人计算机上的Maven仓库
- 远程仓库:网络上的仓库
- 中央仓库:Maven官方提供的仓库大全
- 私服:局域网中搭建的Maven仓库,为公司内的开发人员公用
- 其他公共库:一些知名公司将收集的依赖构建而成的仓库
Maven在Windows上的安装和配置
搭建本地环境
1.下载Maven软件包
链接:https://pan.baidu.com/s/1rkmSVHeftD8A64PPZsszeg
提取码:pxqt
2.搭建Maven环境
- 将
apache-maven-3.5.0.rar
解压至D:
盘根目录 - 在系统环境变量中添加变量
M2_HOME=D:\apache-maven-3.5.0
,在 path 变量中添加%M2_HOME%\bin
- 打开终端,输入指令
mvn -version
,如果出现如下信息则表示 Maven 部署成功
>mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: D:\apache-maven-3.5.0\bin\..
Java version: 1.8.0_201, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_201\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
搭建WEB项目
1.创建 WEB 项目
- 点击 Create New Project 进行项目创建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmb6QL7m-1618907512603)(https://www.yaconit.com/md/java/maven/resources/156416000423673.jpg)] - 选择 Maven
- SDK 选择 1.7 以上版本
- 勾选 Create from archetype,使用 Maven 模板进行项目创建
- 选择 maven-archetype-webapp 模板
- 点击 Next 进入下一步
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LGogd9Yk-1618907512608)(https://www.yaconit.com/md/java/maven/resources/156416003488301.jpg)] - 填写项目的 GroupId
- 填写项目的 ArtifactId
- 点击 Next 进入下一步
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R83lFDRp-1618907512610)(https://www.yaconit.com/md/java/maven/resources/156416004333737.jpg)] - 选择本地 Maven 环境
- 点击 Next 进入下一步
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmApNphR-1618907512613)(https://www.yaconit.com/md/java/maven/resources/156416005289732.jpg)] - 填写项目名称,尽量与 ArtifactId 保持一致
- 点击 Next 进入下一步
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dUK4TIDL-1618907512615)(https://www.yaconit.com/md/java/maven/resources/156416006135817.jpg)] - 如果是首次使用 Maven,需要远程下载 JAR 文件,并且需要构建项目,所以,此步非常耗时,请耐性等待
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fvTR1ybF-1618907512616)(https://www.yaconit.com/md/java/maven/resources/156416006845411.jpg)] - 当出现以下界面时,则表示项目构建成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZzVxahQb-1618907512618)(https://www.yaconit.com/md/java/maven/resources/156416092992515.jpg)] - 创建目录
/src/main/java
,并将该目录设置为源码目录,操作步骤:右键java目录=>Mark Directory as=>Sources Root
- 创建目录
/src/main/resources
,并将该目录设置为资源目录,操作步骤:右键resources目录=>Mark Directory as=>Resources Root
2.部署 WEB 项目
- 点击工具条中的 Add Configuration… 进行部署配置
- 点击 + 号
- 选择 Tomcat Server,使用 Tomcat 作为我们的项目的运行服务器
- 选择 Local 进行本地服务器配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XNJPPvQ6-1618907512619)(https://www.yaconit.com/md/java/maven/resources/156416240758819.jpg)] - 给当前的配置去一个名称,建议与项目名一致
- 选择本地的 Tomcat 目录
- 点击 Deployment 进行项目运行环境配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXYTzHhd-1618907512621)(https://www.yaconit.com/md/java/maven/resources/156416241657643.jpg)] - 点击 + 号
- 选择 Artifact…
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lvy9qlQ7-1618907512623)(https://www.yaconit.com/md/java/maven/resources/156416242230297.jpg)] - 选择 war exploaded,启动服务后,项目会被打成 war 包,并且会被加压展开,方便我们看到运行时的项目目录细节
- 点击 OK
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nehe7IS2-1618907512624)(https://www.yaconit.com/md/java/maven/resources/156416243390736.jpg)] - 点击 OK
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZxYwDvzI-1618907512626)(https://www.yaconit.com/md/java/maven/resources/156416244034435.jpg)] - 点击 三角或虫子 进行启动项目,三角为非调试模式启动,虫子为调试模式启动,启动成功后,会自动打开页面,如果页面中出现 Hello World! 的内容,则表示项目部署成功
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WyOdXOZs-1618907512627)(https://www.yaconit.com/md/java/maven/resources/156416244863092.jpg)]
Maven在Linux上的安装和配置
环境要求
- Windows或CentOS 6.5
- JDK 7及以上版本
1.下载Maven
链接:https://pan.baidu.com/s/1rkmSVHeftD8A64PPZsszeg
提取码:pxqt
将下载的文件上传到/usr/local目录下
2.解压tar文件安装
-
在/usr/local目录下创建Maven文件夹
cd /usr/local mkdir maven
-
解压tar文件
tar -zxvf apache-maven-3.6.1-bin.tar.gz -C /user/local/maven
-
配置环境变量
vim /etc/profile
在打开的文件中添加如下内容
export MAVEN_HOME=/user/local/maven/apche-maven-3.6.1 export PATH=${MAVEN_HOME}/bin:$PATH
保存退出vim后,还须使新增的环境变量生效
source /etc/profile
-
验证Maven是否安装成功
mvn -version
Pom文件详解
对依赖进行管理
标签 | 说明 |
---|---|
project | POM文件的顶级元素 |
modelVersion | POM模型版本,描述这个POM文件是遵循哪个POM版本 |
groupId | 项目组织的唯一标识,通常由域名倒写,如com.company,对应Java包的结构 |
artifactId | 项目唯一标识,对应项目名称 |
version | artifact(生成物)的版本,如1.0.0-SNAPSHOT、1.0.0-RELEASE,1.0.0表示版本号,SNAPSHOT表示快照版,RELEASE表示发行版 groupId、artifactId、version唯一确定一个artifact |
name | 项目的展现名,在Maven生成的文档中使用 |
url | 项目主页的URL,在Maven生成的文档中使用 |
description | 项目的描述,在Maven生成的文档中使用 |
packaging | 项目的打包方式,一般为 jar 或者 war |
parent | 指定父依赖,类似Java中的继承,当前项目可继承父依赖中配置的依赖和属性 需要指定父依赖的groupId、artifactId、version和relativePath |
dependencies | 定义此项目的依赖关系集,在子节点dependency中添加具体的依赖 |
dependency | dependencies的子节点,配置具体的依赖,需要指定具体依赖的groupId、artifactId、version,以及一些扩展配置 scope:compile、provided、runtime、test、system optional:false / true exclusions + exclusion:屏蔽对指定groupId+artifactId的传递依赖 |
properties | 定义一些常量,可在pom文件的其他地方引用 |
build | 构建选项,描述如何编译和打包项目,具体工作通过plugin完成:maven-clean-plugin、maven-resources-plugin、maven-compiler-plugin、maven-surefire-plugin、maven-war-plugin 或 maven-jar-plugin、maven-install-plugin、maven-deploy-plugin |
Maven常用操作
- clean:清除项目编译后的文件
- validate:验证工程是否正确,所有需要的资源是否可用。可以验证pom.xml文件的正确性
- compile:编译项目
- test:执行项目中的测试用例
- package:将项目打包
- verify:运行任何检查,验证包是否有效且达到质量标准
- install:将项目打包进本地仓库
- site:生成项目的网页形式的文档
- deploy:将项目打包发布到远程仓库
Nexus私服
强大的Maven仓库管理器,简化了内部仓库的维护和外部仓库的访问。不需要数据库它使用文件系统加Lucene来组织数据
下载安装
安装环境准备
- Centos 6.4 64 位
- JDK 1.8
- nexus-latest-bundle.tar.gz
下载 Nexus2
链接:https://pan.baidu.com/s/1CUhqquS_8rQMeHwr1ztJtQ
提取码:fngu
安装配置
- 通过 FTP 工具将
nexus-2.14.12-02-bundle.tar.gz
上传至服务器/usr/local/nexus2.14
目录中 - 进入
/usr/local/nexus2.14
目录,然后执行指令tar -zxvf 2.14.12-02-bundle.tar.gz
进行解压 - nexus 默认端口号为 8081,可以在
/usr/local/nexus2.14/nexus-2.14.12-02/conf/nexus.properties
中更改端口号
开放端口
- 修改文件
/etc/sysconfig/iptables
进行 8081 端口的开放 - 执行指令
service iptables restart
重启防火墙
启动
- 将文件
/usr/local/nexus2.14/nexus-2.14.12-02/bin/nexus
中的内容#RUN_AS_USER=
更改为RUN_AS_USER=root
- 执行指令
/usr/local/nexus2.14/nexus-2.14.12-02/bin/nexus start
进行启动
访问
访问网址 http://192.168.44.128:8081/nexus
进行访问 Nexus
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jgoV3zPy-1618907512629)(resources/155470108754965.jpg)]
登陆 Nexus
- 点击右上角的
login in
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zndu8xCI-1618907512630)(resources/155470108754965.jpg)] - 输入用户名和密码,默认的用户名为
admin
,密码为admin123
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0lr7mJq2-1618907512632)(resources/155470113326604.jpg)]
索引文件配置
在线配置
- 点击左侧的
Repositories
- 选择右侧的
Central
中心库 - 选择下方的
Configuration
- 将
Download Remote Indexes
设置为True
- 点击下面的
Save
进行配置保存
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xBZAMn1t-1618907512633)(resources/155470399250680.jpg)] - 右键
Central
中心库 - 点击
Repair Index
进行索引下载
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dO2lY3fi-1618907512635)(resources/155470419181960.jpg)]
由于是远程服务器下载,所以过程会非常慢,不建议使用在线方式下载索引文件,推荐使用离线方式
离线配置
下载 Nexus 索引文件及依赖包
链接:https://pan.baidu.com/s/1nl9LMYZW6cDPQZxP3oq0YA
提取码:dq3o
安装索引文件
- 将下载好的索引文件和依赖包拷贝到服务器
/usr/local/nexus2.14/index
目录中 - 进入
/usr/local/nexus2.14/index
目录中,执行指令java -jar indexer-cli-5.1.0.jar -u nexus-maven-repositoryory-index.gz -d indexer
对nexus-maven-repository-index.gz
进行解压 - 执行指令
/usr/local/nexus2.14/nexus-2.14.12-02/bin/nexus stop
停止 Nexus 服务 - 清空目录
/usr/local/nexus2.14/sonatype-work/nexus/indexer/central-ctx
下的所有内容 - 将
/usr/local/nexus2.14/index/indexer
下的所有内容拷贝到/usr/local/nexus2.14/sonatype-work/nexus/indexer/central-ctx
- 打开 Nexus 控制台的 Browse Index,然后点击刷新
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6R6jR1ps-1618907512637)(resources/155471108880746.jpg)]
创建仓库
- 点击 Log in 登录
- 输入用户名:admin,密码:admin123
- 点击 Log In 登录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0ACCaS9k-1618907512638)(resources/156533576129333.jpg)] - 点击 Repositories 进入仓库列表
- 点击 Add…
- 选择 Proxy Repository 创建代理仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGyiXihW-1618907512639)(resources/156533578418659.jpg)] - 输入 仓库ID 与 仓库名
- 输入代理仓库的 仓库地址
- 点击 Save 保存仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yxX8RG6M-1618907512641)(resources/156533579767401.jpg)]
手动上传JAR文件
- 选择 3rd party
- 选择 Artifact Upload
- 选择 GAV Parameters
- 填写要上传JAR文件的 坐标信息 及 版本号,并选择 文件类型
- 点击 Select Artifact(s) to Upload…,选择要上传的 JAR 文件
- 点击 Add Artifact
- 点击 **Upload Artifact(s)**进行上传
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmBYo1CS-1618907512642)(resources/156534124888280.jpg)]
自动发布JAR文件
Maven配置
<!-- settings.xml -->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
配置pom文件
<!-- pom.xml -->
<distributionManagement>
<!-- 发布版本 -->
<repository>
<id>releases</id>
<url>http://192.168.1.157:8081/nexus/content/repositories/releases/</url>
</repository>
<!-- 快照版本 -->
<snapshotRepository>
<id>snapshots</id>
<url>http://192.168.1.157:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
从私服拉取JAR文件
Maven配置
<!-- settings.xml -->
<mirrors>
<mirror>
<id>public</id>
<mirrorOf>*</mirrorOf>
<name>public</name>
<url>http://192.168.1.157:8081/nexus/content/groups/public/</url>
</mirror>
</mirrors>
方式一:局部配置
<!-- pom.xml -->
<repositories>
<repository>
<id>public</id>
<name>public</name>
<url>http://192.168.1.157:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
方式二:全局配置
<!-- settings.xml -->
<profiles>
<profile>
<id>public</id>
<repositories>
<repository>
<id>public</id>
<name>public</name>
<url>http://192.168.1.157:8081/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>public</activeProfile>
</activeProfiles>
Nexus仓库
Nexus的预定一仓库的类型(type),策略(Policy),格式(Format)均不同
仓库介绍
仓库类型
Hosted Repository:本地仓库,通常会部署自己的构件到这一类型的仓库
Proxy Repository:代理仓库,它们被用来代理远程的公共仓库
Virtual Repository:虚拟仓库
Repository Group:仓库组,用来合并多个hosted/proxy仓库,仓库组用来方便开发人员进行仓库设置,仓库组可以自由组合其他的仓库为一组
仓库格式
maven2:
maven1:
仓库策略
Release:发布版本,即稳定版本
Snapshot:资源快照,版本相对不稳定
预定义仓库
3rd party:存放第三方构件,一些无法从公共仓库获得的构件
Apache Snapchats:使用代理Apache Maven仓库快照版本的构件仓库
central:用来代理Maven中央仓库中发布版本构件的仓库
Release:存放稳定版本的构件
Public Repository:仓库组
用来代理远程的公共仓库
Virtual Repository:虚拟仓库
Repository Group:仓库组,用来合并多个hosted/proxy仓库,仓库组用来方便开发人员进行仓库设置,仓库组可以自由组合其他的仓库为一组
仓库格式
maven2:
maven1:
仓库策略
Release:发布版本,即稳定版本
Snapshot:资源快照,版本相对不稳定
预定义仓库
3rd party:存放第三方构件,一些无法从公共仓库获得的构件
Apache Snapchats:使用代理Apache Maven仓库快照版本的构件仓库
central:用来代理Maven中央仓库中发布版本构件的仓库
Release:存放稳定版本的构件
Public Repository:仓库组