34-Maven笔记-qianfeng-笔记
文章目录
一、Maven简介
①:在项目中如何导入jar包
- 下载jar包(mvn)
- 将下载的jar包拷贝到相中(WEB-INF/lib)
- 选择jar文件–右键–Add as Library
②:传统导入jar包的方式存在什么问题?
- 步骤多(相对)一一
繁琐
- 在不同的项目中如果需要相同的jar包,需要分别存储这个jar文件一一
冗余、项目体积大
- 在不同的环境下可能因为ja文件版本不一致导致项目无法运行(重新配置)一一
移植性差
③:项目的生命周期
- 项目从编译到运行的整个过程
- 完整的生命周期:清理缓存一校验一编译一测试订包一安装一部署
DEA提供了一键构建项目的功能,但是如果我们需要自定义的生命周期管理,却没有现成的工具(清理缓存)
④:Maven简介
Maven是个基于项目对象模型(P0M)用于进行项目的依赖管理、生命周期管理的工具软件
项目的依赖(Gar包)管理
项目生命周期管理
聚合工程
二、Maven安装及配置
①:Maven下载
官网地址:https://maven.apache.org/ |
---|
点击下载 |
![]() |
下载对应系统的版本 |
![]() |
![]() |
![]() |
![]() |
②:Maven安装
Maven是基于Java语言进行开发的,因此依赖JDK(建议JDK1.7+)
开箱即用:直接解压即可
- 解压(d/mvn)
- 目录结构:
- bin存放指令文件(Maven提供了一个mvm指令)
- boot包含了一个类加载框架的jar文件
- conf包含了Maven的核心配置文件settings.xml
- Iib存放了maven运行所需的jar文件
③:配置环境变量
1. MAVEN_HOME D:mvn\apache-maven-3.6.3 |
---|
![]() |
2. Path 增加 %MAVEN_HOME%\bin |
---|
![]() |
测试 |
![]() |
三、Maven的项目结构
使用Maven进行项目还有一个好处:无论使用什么样的开发工具(eclipse/idea)项目的结构是统一的。
①:Maven的项目结构
- src
- main :程序功能代码
- Java :java代码
- resource :资源代码、配置代码
- test :测试代码
- Java :单元测试java代码
- resource :资源代码、配置代码
- pom.xml :项目对象模型
②:pom.xml
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。
执行任务或目标时,Maven 会在当前目录中查找 POM。它读取 POM,获取所需的配置信息,然后执行目标。
POM 中可以指定以下配置:
项目依赖
插件
执行目标
项目构建 profile
项目版本
项目开发者列表
相关邮件列表信息
在创建 POM 之前,我们首先需要描述项目组 (groupId), 项目的唯一ID。
<project xmlns = "http://maven.apache.org/POM/4.0.0"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<!-- 模型版本 -->
<modelVersion>4.0.0</modelVersion>
<!-- 公司或者组织的唯一标志,并且配置时生成的路径也是由此生成, 如com.companyname.project-group,maven会将该项目打成的jar包放本地路径:/com/companyname/project-group -->
<groupId>com.companyname.project-group</groupId>
<!-- 项目的唯一ID,一个groupId下面可能多个项目,就是靠artifactId来区分的 -->
<artifactId>project</artifactId>
<!-- 版本号 -->
<version>1.0</version>
<!-- 配置当前项目的依赖 -->
<dependencies>
</dependencies>
</project>
如果需要在当前项目中添加依赖,只需在pom.xml文件中进行依赖配置即可
配置依赖 找到依赖的坐标,添加dependencies
标签即可
<!--https://mvnrepository.com/artifact/mysq1/mysql-connector-java-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
四、依赖管理
①:Maven进行依赖管理的流程
②:仓库介绍
本地仓库
就是本地计算机上的某个文件夹(可以是自定义的任何文件夹)远程仓库
就是远程主机上的jar文件仓库中央仓库
maven官方提供的仓库,包含了所需的一切依赖(免配置)公共仓库
除了中央仓库以外的第三方仓库都是公共仓库,例如aliyun(需要配置)私服
企业搭建的供内部使用的maven仓库
③:Maven仓库配置
01.配置本地仓库
<localRepository>D:\OOP\java\maven\mvn_resp</localRepository>
02.配置公共仓库
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
五、项目的生命周期管理
①:生命周期介绍
项目构建的声明周期:项目开发结束之后部署到运行环境运行的过程
- 清除缓存
- 检查
- 编译
- 测试 (就会执行maven项目中test目录下的单元测试)
- 打包(war、jar)
- 安装(Gar会被安装到本地仓库)
- 部署(将项目生成的包放到服务器中)
②:生命周期管理指令
在项目的根目录下执行mvn指令(此目录下必须包含pom.xml)
-
清除缓存
mvn clean
-
检查
mvn check
-
编译
mvn compile
-
测试 (就会执行maven项目中test目录下的单元测试)
mvn test
-
打包(war、jar)
mvn package
-
安装(Gar会被安装到本地仓库)
mav install
-
部署(将项目生成的包放到服务器中)
mvn deploye
六、基于IDEA中使用Maven
①:在IDEA中关联Maven
说明:IDEA本身集成了Maven,考虑到lDEA和Maven版本的兼容性Idea不建议配置比默认版本更新的版本建议 使用idea自带的maven |
---|
![]() |
![]() |
![]() |
②:使用IDEA创建Maven项目
01.创建Java项目
![]() |
![]() |
![]() |
![]() |
02.创建Web项目
1.先创建一个Java项目 |
---|
![]() |
![]() |
2.完善web项目结构 |
---|
![]() |
https://blog.youkuaiyun.com/cdmamata/article/details/52683719 |
![]() ![]() |
3.配置web组件 |
---|
![]() |
![]() |
![]() |
![]() |
4.部署web项目 |
---|
![]() |
![]() |
![]() |
![]() |
③:在IDEA中使用Maven对项目进行管理
④:依赖范围
在通过dependencyi添加依赖时,可以通过
scope
标签配置当前依赖的适用范围
- test只在项目测试阶段引入当前依赖(编译、测试)
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
runtime
只在运行时使用(运行、测试运行)provided
在(编译、测试、运行)compile
在(编译、测试、运行、打包)都引入
⑤:在IDEA中使用Maven进行项目构建
01.Maven项目构建生命周期说明
clean
清理缓存清理项目生成的缓存validate
校验验证项目需要是正确的(项目信息、依赖)compile
编译编译项目专供的源代码test
测试运行项目中的单元测试package
打包将项目编译后的代码打包成发布格式 。verify
检查对集成测试的结果进行检查、确保项目的质量是达标的install
安装将包安装到maven的本地仓库,以便在本地的其他项目中可以引用此项目(聚合工程)deplo
部署将包安装到私服的仓库,以供其他开发人员共享
02.IDEA进行生命周期说明
七、私服
企业搭建供内部使用的一个Maven仓库 。
- 开发者需要依赖直接从私服下载
- 私服可以实现企业内部依赖的共享:当企业开发了一个通用插件r),可以发布到私服,可以连接到 当前私服的其他开发者就可以共享这个插件了
①:私服搭建
我们可以通过专门的Maven仓库管理软件来搭建私服。例如:
Apache Archiva
、Nexus
01.下载nexus
02. 安装并运行nexus
- ①. 使用管理员运行cmd
- ②.进入
nexus-2.14.11-01\bin
目录中执行以下命令
先进入到日志目录
nexus-2.14.4-03\logs\wrapper.log
下,查看错误信息,主要是没找到本地的jdk
> 进入
nexus-2.14.4-03\bin\jsw\conf\wrapper.conf
,找到此处修改成自己的jdk路径
> 修改完毕,在bin目录下重新输入
nexus start
,启动成功
停止命令
nexus stop
03.登录Nexus
私服登录地址 默认端口号
8081
04.私服仓库组配置
添加阿里中央仓库
②:配置私服
1: 在
maven
的settings..xml
文件的servers
标签中 配置认证信息
<!--配置连接私服所需的帐号和密码-->
<server>
<id>nexus-public</id><!--nexus的认证id-->
<username>admin</username><!--nexus中的用户名密码-->
<password>admin123</password>
</server>
2: 在
maven
的settings.xml
文件的profiles
标签中
repository
和pluginRepository
的id
子标签的值,要和上面配置的server
的id
子标签的值一致
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-public</id>
<name>Nexus Release Snapshot Repository</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-public</id>
<url>http://localhost:8081/nexus/content/groups/public/</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
3: 在
maven
的settings.xml
文件的activeProfiles
配置激活profile
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>