
繁琐冗余、项目体积大移植性差DEA提供了一键构建项目的功能,但是如果我们需要自定义的生命周期管理,却没有现成的工具(清理缓存)
Maven是个基于项目对象模型(P0M)用于进行项目的依赖管理、生命周期管理的工具软件
项目的依赖(Gar包)管理
项目生命周期管理
聚合工程
| 官网地址:https://maven.apache.org/ |
|---|
| 点击下载 |
![]() |
| 下载对应系统的版本 |
![]() |
![]() |
![]() |
![]() |
Maven是基于Java语言进行开发的,因此依赖JDK(建议JDK1.7+)
开箱即用:直接解压即可
1. MAVEN_HOME D:mvn\apache-maven-3.6.3 |
|---|
![]() |
2. Path 增加 %MAVEN_HOME%\bin |
|---|
![]() |
| 测试 |
![]() |
使用Maven进行项目还有一个好处:无论使用什么样的开发工具(eclipse/idea)项目的结构是统一的。
- src
- main :程序功能代码
- Java :java代码
- resource :资源代码、配置代码
- test :测试代码
- Java :单元测试java代码
- resource :资源代码、配置代码
- 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.0modelVersion>
<groupId>com.companyname.project-groupgroupId>
<artifactId>projectartifactId>
<version>1.0version>
<dependencies>
dependencies>
project>
如果需要在当前项目中添加依赖,只需在pom.xml文件中进行依赖配置即可
配置依赖 找到依赖的坐标,添加dependencies标签即可
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.47version>
dependency>


本地仓库 就是本地计算机上的某个文件夹(可以是自定义的任何文件夹)远程仓库 就是远程主机上的jar文件仓库
中央仓库 maven官方提供的仓库,包含了所需的一切依赖(免配置)公共仓库 除了中央仓库以外的第三方仓库都是公共仓库,例如aliyun(需要配置)私服 企业搭建的供内部使用的maven仓库
<localRepository>D:\OOP\java\maven\mvn_resplocalRepository>


<mirror>
<id>alimavenid>
<name>aliyun mavenname>
<url>http://maven.aliyun.com/nexus/content/groups/public/url>
<mirrorOf>centralmirrorOf>
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,考虑到lDEA和Maven版本的兼容性Idea不建议配置比默认版本更新的版本建议 使用idea自带的maven |
|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
| 1.先创建一个Java项目 |
|---|
![]() |
![]() |
| 3.配置web组件 |
|---|
![]() |
![]() |
![]() |
![]() |
| 4.部署web项目 |
|---|
![]() |
![]() |
![]() |
![]() |
在通过dependencyi添加依赖时,可以通过
scope标签配置当前依赖的适用范围
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13.2version>
<scope>testscope>
dependency>
runtime 只在运行时使用(运行、测试运行)provided 在(编译、测试、运行)compile 在(编译、测试、运行、打包)都引入clean 清理缓存清理项目生成的缓存validate 校验验证项目需要是正确的(项目信息、依赖)compile 编译编译项目专供的源代码test 测试运行项目中的单元测试package 打包将项目编译后的代码打包成发布格式 。verify 检查对集成测试的结果进行检查、确保项目的质量是达标的install 安装将包安装到maven的本地仓库,以便在本地的其他项目中可以引用此项目(聚合工程)deplo 部署将包安装到私服的仓库,以供其他开发人员共享
企业搭建供内部使用的一个Maven仓库 。
- 开发者需要依赖直接从私服下载
- 私服可以实现企业内部依赖的共享:当企业开发了一个通用插件r),可以发布到私服,可以连接到 当前私服的其他开发者就可以共享这个插件了
我们可以通过专门的Maven仓库管理软件来搭建私服。例如:
Apache Archiva、Nexus


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
私服登录地址 默认端口号
8081





添加阿里中央仓库



1: 在
maven的settings..xml文件的servers标签中 配置认证信息
<server>
<id>nexus-publicid>
<username>adminusername>
<password>admin123password>
server>

2: 在
maven的settings.xml文件的profiles标签中
repository和pluginRepository的id子标签的值,要和上面配置的server的id子标签的值一致<profile>
<id>nexusid>
<repositories>
<repository>
<id>nexus-publicid>
<name>Nexus Release Snapshot Repositoryname>
<url>http://localhost:8081/nexus/content/groups/public/url>
<releases><enabled>trueenabled>releases>
<snapshots><enabled>trueenabled>snapshots>
repository>
repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-publicid>
<url>http://localhost:8081/nexus/content/groups/public/url>
<releases><enabled>trueenabled>releases>
<snapshots><enabled>trueenabled>snapshots>
pluginRepository>
pluginRepositories>
profile>

3: 在
maven的settings.xml文件的activeProfiles配置激活profile
<activeProfiles>
<activeProfile>nexusactiveProfile>
activeProfiles>

