1.Maven认知

Maven 是一个项目管理工具。可以通过一段描述信息很方便的管理项目报告,生成站点,管理JAR文件,等等。
Maven 以“程序构建能力”为特色,还提供高级项目管理工具。Maven 的“缺省构建规则”具有较高的可重用性。

一个完整的Maven包括:

  1. 一个项目对象模型(Project Object Model,POM)
  2. 一个项目生命周期(Project LIfecycle)
  3. 一个依赖管理系统(Dependency Management System )
  4. 逻辑:用来定义在生命周期阶段中“插件目标”(plugin goal)

当使用 Maven 时,用一个明确的 pom 来描述项目,然后 Maven 利用横切逻辑,这些逻辑来自一组共享的(或者自定义)的插件。

Maven 的生命周期在运行 mvn install 时被调用。这条命令告诉 Maven 执行一系列的有序的步骤,直到到达指定的生命周期。

在此期间,Maven 运行了许多默认的插件目标,包括“编译”和创建一个JAR文件,通俗地说,不需要再手动点击编译运行按钮。

2.Maven 的安装与配置

Maven 下载:http://maven.apache.org/download.cgi

  1. 首先要确定 jdk 已经安装和配置
  2. maven-xxxx-xxx-bin.jar 解压到放到 D 盘
  3. 配置 maven 环境系统变量:M2_HOME       D:\maven\apache-maven-3.3.3
  4. 配置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 按钮

(由于最新版的 Eclipse 代号 Mars,已经直接集成了 Maven,所以无需在安装 m2eclipse 插件)

配置:

  1. 配置本地仓库;
  2. 配置下载 jar 包源码;(下载JAR包的同时下载源码)

Windows -> preference -> moven ->勾选以下两项!

maven lifeclyle三板斧_maven lifeclyle三板斧

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种:

  1. 编译 classpath,
  2. 测试 classpath,
  3. 运行 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实战》许晓斌 著