1.Maven认知
Maven 是一个项目管理工具。可以通过一段描述信息很方便的管理项目报告,生成站点,管理JAR文件,等等。
Maven 以“程序构建能力”为特色,还提供高级项目管理工具。Maven 的“缺省构建规则”具有较高的可重用性。
一个完整的Maven包括:
- 一个项目对象模型(Project Object Model,POM)
- 一个项目生命周期(Project LIfecycle)
- 一个依赖管理系统(Dependency Management System )
- 逻辑:用来定义在生命周期阶段中“插件目标”(plugin goal)
当使用 Maven 时,用一个明确的 pom 来描述项目,然后 Maven 利用横切的逻辑,这些逻辑来自一组共享的(或者自定义)的插件。
Maven 的生命周期在运行 mvn install 时被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达指定的生命周期。
在此期间,Maven 运行了许多默认的插件目标,包括“编译”和创建一个JAR文件,通俗地说,不需要再手动点击编译运行按钮。
2.Maven 的安装与配置
Maven 下载:http://maven.apache.org/download.cgi
- 首先要确定 jdk 已经安装和配置
- 把 maven-xxxx-xxx-bin.jar 解压到放到 D 盘
- 配置 maven 环境系统变量:M2_HOME D:\maven\apache-maven-3.3.3
- 配置Path: 加上 ;%M2_HOME%\bin
pom.xml 文件
<!--
modelVersion:POM 模型版本 4.0.0 固定
groupId:一般指某个公司或者某个组织的某个项目 比如 org.springframework
artifactId:一般指某个具体项目的某个具体模块 比如 spring-context
Version:项目的版本
-->
<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>
<groupId>com.java1234.HelloWorld</groupId>
<artifactId>HelloWorld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!--Mvn 远程仓库 注入相应依赖-->
</dependencies>
</project>
Maven 常见命令
- Mvn compile 编译
- Mvn clean 清空
- Mvn test 测试
- Mvn package 打包
- Mvn install 把项目安装到本地仓库
Mvn 远程仓库地址:
Maven 本地仓库迁出 C 盘:配置 setting 文件
<localRepository>D:\maven\repository</localRepository>
3. m2eclipse 插件安装
打开 Eclipse,点击菜单 Help - > Install New Software 点击 Add 按钮
- Name:m2e
- location: http://download.eclipse.org/technology/m2e/releases
(由于最新版的 Eclipse 代号 Mars,已经直接集成了 Maven,所以无需在安装 m2eclipse 插件)
配置:
- 配置本地仓库;
- 配置下载 jar 包源码;(下载JAR包的同时下载源码)
Windows -> preference -> moven ->勾选以下两项!
4. Maven 核心技术
1.Maven 仓库概念
- Maven 远程仓库配置文件: $M2_HOME/lib/maven-model-builder-3.3.3.jar
- 文件:org\apache\maven\model\pom-4.0.0.xml
<repositories>
<repository>
<id>central</id>
<name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
2.Maven 的依赖特性:
依赖选择按照:“最短路径原则” 和 “最先声明原则”
3.Maven 聚合和继承特性
5.Maven 依赖范围
classpath 分为3种:
- 编译 classpath,
- 测试 classpath,
- 运行 classpath
Scope 依赖范围选项:
- Compile:编译依赖范围,默认就是compile。在编译、测试、运行均有效;
- Test:测试依赖范围。仅在测试有效,如JUnit;
- Provided:已提供依赖范围。编译、测试有效,运行时无效,如servlet-api;
- ystem:系统依赖范围。使用system范围的依赖必须通过systemPath指定依赖文件的路径;
- Import:导入依赖范围。使用dependencyManagement时,可以导入依赖配置。
5. Maven 生命周期与插件
Maven 通过插件的方式来完成一系列过程来实现功能。
Maven 拥有三套独立的生命周期:
Clean 生命周期
- pre-clean:执行一些清理前需要完成的工作
- clean:清理上一次构建生成的文件
- post-clean:执行一些清理后需要完成的工作
Default 生命周期
- 1,validate;
- 2,initialize;
- 3,generate-sources;
- 4,process-sources;
- 5,generate-resources;
- 6,process-resources;
- 7,compile;
- 8,process-classes;
- 9,generate-test-sources;
- 10,process-test-sources;
- 11,generate-test-resources;
- 12,test-compile;
- 13,process-test-classes;
- 14,test;
- 15,prepare-package;
- 16,package;
- 17,pre-integration-test;
- 18,integration-test;
- 19,post-integration-test;
- 20,integration-test;
- 21,post-integration-test;
- 22,verifty;
- 23,install;
- 24,deploy;
Site 生命周期
- pre-site:
- site:
- post-site:
- site-deploy:
书籍推荐:《Maven实战》许晓斌 著