Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队能够自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。 咱们常常用的就是jar包的管理。html
POM( Project Object Model,项目对象模型 ) 是 Maven 工程的基本工做单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建,声明项目依赖,等等。apache
在建立 POM 以前,咱们首先须要描述项目组 (groupId), 项目的惟一ID。mybatis
<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> <packaging>jar</packaging> </project>
全部 POM 文件都须要 project 元素和三个必需字段:groupId,artifactId,version。框架
节点 | 描述 |
---|---|
project | 工程的根标签。 |
modelVersion | 模型版本须要设置为 4.0。 |
groupId | 这是工程组的标识。它在一个组织或者项目中一般是惟一的。例如,一个银行组织 com.companyname.project-group 拥有全部的和银行相关的项目。 |
artifactId | 这是工程的标识。它一般是工程的名称。例如,消费者银行。groupId 和 artifactId 一块儿定义了 artifact 在仓库中的位置。 |
version | 这是工程的版本号。在 artifact 的仓库中,它用来区分不一样的版本。例如:yii com.company.bank:consumer-banking:1.0 |
packaging | 项目打包的类型,可使jar、war、rar、ear、pom,默认是jar |
dependencies和dependencymaven
前者包含后者。前面说了,Maven的一个重要做用就是统一管理jar包,为了一个项目能够build或运行,项目中不可避免的,会依赖不少其余的jar包,在Maven中,这些依赖就被称为dependency。工具
说到这里,就有一个本地仓库和远程仓库的概念了。本地仓库和远程仓库是这样的,Maven工程首先会从本地仓库中获取jar包,当没法获取指定jar包时,本地仓库会从远程仓库(中央仓库)中下载jar包,并放入本地仓库以备未来使用。本次仓库路径:c:\用户\{找到计算机用户}\.m2。远程仓库默认使用的是http://repo2.maven.org/maven2/,可是咱们也能够修改。单元测试
举个例子,比方说个人项目中用到了MyBatis,那么pom能够添加这段配置:测试
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.5</version> </dependency> </dependencies>
点击ctrl+s保存,Eclipse就会自动到远程仓库里下载mybatis的jar包到本地仓库,经过groupId、artifactId、version惟一标识一个Maven项目,有了这三个元素,咱们就能够去远程仓库下载,若是本地仓库里已经有该jar包了,则不会到远程仓库下载。ui
properties是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),能够设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于往后统一升级。经过${}能够在dependency引用该模块定义的属性。
<properties> <mybatis.version>3.2.5</mybatis.version> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies>
如上代码,咱们在properties中定义了一个mybatis.version的属性,而后再下面的version里面就能够引用该属性了。
<repositories> <repository> <id>Dcm4Che</id> <name>Dcm4Che</name> <url>http://www.dcm4che.org/maven2/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
标签的含义以下:
id
maven仓库的id(自定义)
name
maven仓库的名称(自定义)
url
maven仓库的url(能够替换为阿里的镜像仓库:http://maven.aliyun.com/nexus/content/groups/public/,能够是本身搭建的maven私服)
releases
maven仓库中版本为release的包
snapshots
maven仓库中版本为snapshots的包
一个典型的 Maven 构建(build)生命周期是由如下几个阶段的序列组成的:
阶段 | 处理 | 描述 |
---|---|---|
验证 validate | 验证项目 | 验证项目是否正确且全部必须信息是可用的 |
编译 compile | 执行编译 | 源代码编译在此阶段完成 |
测试 Test | 测试 | 使用适当的单元测试框架(例如JUnit)运行测试。 |
包装 package | 打包 | 建立JAR/WAR包如在 pom.xml 中定义说起的包 |
检查 verify | 检查 | 对集成测试的结果进行检查,以保证质量达标 |
安装 install | 安装 | 安装打包的项目到本地仓库,以供其余项目使用 |
部署 deploy | 部署 | 拷贝最终的工程包到远程仓库中,以共享给其余开发人员和工程 |
经常使用的maven命令以下:
1. 编译源代码:
mvn compile
2. 运行测试:
mvn test
3. 打包:
mvn package
4.打包到本地仓库(.m2路径下)
mvn install
5.清除产生的项目(清楚target目录文件)
mvn clean
6.上传到私服
mvn deploy
7.组合命令
mvn clean install --清楚打包
mvn -Dtest package 跳过测试 只打包
文章参考
http://www.runoob.com/maven/maven-tutorial.html
https://www.yiibai.com/maven
https://www.cnblogs.com/hongwz/p/5456578.html