下载:

1.从官网http://maven.apache.org中下载,下载下来的是一个压缩包,解压即可。因为Maven本身也是用Java实现的。
2.Maven的目录结构
   /bin; maven的运行目录,包括maven的核心命令mvn等。
   /boot; maven的引导目录
   /conf; maven的配置目录,maven的核心配置文件就存放在这里
   /lib; maven运行时所需的jar文件
 

配置:

1.配置环境变量
   1) 添加MAVEN_HOME,指定Maven的根目录
   2) 在path中添加:;%MAVA_HOME%\bin
2.配置本地仓库
   打开Maven的核心配置文件settings.xml文件,指定localRepository本地仓库的路径
3.在集成开发环境中配置Maven
   1)在Eclipse配置Maven
        Wondow-->preferences-->Maven
         i. 在installations中添加Maven的根目录
         ii. 在 User Settings中指定Maven的核心配置文件settings的目录
   2)在IDEA中配置Maven
        File-->Settings-->Build-->Build Tools-->Maven
        i. 在Maven home directory配置选项中指定Maven的根目录
        ii. 在User settings file选项中指定核心配置文件settings的路径
        iii. 在Local repository选项中指定本地仓库的路径
        vi.勾选两个override选项
 
 

 仓库:

1.Maven的仓库是用于存放所有类库的。在羡慕的开发过程中对所有jar的以来都将从仓库中获取。
 
2.Maven的仓库主要分为两种:
1)本地仓库
     在自己本机中用专门的一个目录存放的类库
2)远程仓库
     在远程主机中存放的类库(Apache的中央仓库就是一个远程仓库)
 
3.仓库的查找顺序
   当在项目中进行类库的依赖时,先是从本地仓库中查找,如果本地仓库有需要的jar,那么将直接从本地仓库中依赖,如果没有,那么就会去远程仓库中查找,然后下载到本地仓库中备份,下次再进行以来的时候,就直接从本地仓库中获取。
 
 

1.创建Maven项目:

  1)在Eclipse中创建Maven项目
        File-->new-->Maven Project 新建一个Maven项目(勾选Create a Simple    Project),点击next,填写相应的GAV坐标信息以及打包的方式,再点击finish完成。
 
   2)在IDEA中创建Maven项目
     
 
2.Maven项目的目录结构
   src/main/java  用于存编写的Java源代码
   src/main/resources 用于存放所需的资源文件以及配置文件
   src/test/java  用于存放编写的单元测试源代码
   src/test/resources 用于存放单元测试时所需的资源文件和配置文件
 
3. pom.xml文件
   每一个Maven项目都有一个pom配置文件,它也是Maven项目中的核心配置文件。在这个文件中可以配置当前maven项目的一些信息(如:依赖配置,插件配置,项目的属性设置等等)
 
4. 配置项目的基本属性
<properties>
    <!-- 设置整个maven项目的编码格式 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <!-- 配置控制台输出参数的编码格式,解决乱码 -->
    <argLine>-Dfile.encoding=UTF-8</argLine>
</properties>
 
 

Maven配置插件

 Maven本身就是由一系列的插件构成的,因此我们可以通过pom文件配置Maven的一些核心插件。
在下面标签中添加插件的配置信息
<build>
      <plugins>
               在这里可以配置多个插件
       </plugins>
</build>
 
1.编译插件
<!-- 配置maven编译插件,指定maven编译版本 -->
<plugin>
              <!-- 编译插件的项目名称 -->
              <artifactId>maven-compiler-plugin</artifactId>
              <!-- 编译插件的配置信息 -->
              <configuration>
                  <target>1.8</target>
                  <source>1.8</source>
                  <encoding>UTF-8</encoding>
              </configuration>
</plugin>
 
 2. 打包插件
<plugin>
               <groupId>org.apache.maven.plugins</groupId>
               <artifactId>maven-war-plugin</artifactId>
               <version>2.2</version>
               <!-- 打包的配置信息 -->
               <configuration>
                  <warSourceDirectory>WebContent</warSourceDirectory>
                  <webXml>WebContent\WEB-INF\web.xml</webXml>
               </configuration>
</plugin> 
 
 

 依赖与坐标

1.依赖
maven会自动帮我们完成项目所需要的类库依赖,这是maven非常强大的地方,不需要我们手动的将一个个jar文件再拷贝到项目中然后再添加以来配置。并且,Maven在依赖的过程会自动根据依赖的需要将其他间接依赖的jar一并依赖进来(循环依赖)。所以我们只需要以来一些核心类库,那么maven就会将这个类库所需的其他依赖一并完成。
 
2.坐标
Maven对依赖的查找是基于坐标来完成的。包括我们自己创建的Maven项目同样需要指定坐标。这个坐标有三个重要的属性就是“GAV”
Group Id: 这个指定组织名称,也就是你的项目隶属于哪个公司或组织。
Artifact Id:这个指定模块名称(也可以理解为项目名称),因为一个组织下可以创建多个项目。
Version :模块对应的版本号,一个模块可以有多个版本,方便依赖时使用不同的版本。
 
说明:当Maven在执行依赖的时候,就是根据这个坐标来进行查找。组织-->模块-->版本
找到对应的jar文件,这样就能精确找到一个需要依赖的类库
 
 

           Maven生命周期

 Maven生命周期
  Maven中具备三套完整的生命周期,通过这些生命周期可以完成Maven的所有管理内容。
而每一套生命周期都是由多个阶段组成,每一个阶段都是一个独立的命令,每一个阶段的工作都是由一个Maven的插件来完成。所以也就是Maven本身为什么都是由插件组成的。
 
 1)Clean生命周期
pre-clean 执行一些需要在clean之前完成的工作 
clean 移除所有上一次构建生成的文件 
post-clean 执行一些需要在clean之后立刻完成的工作 
说明:mvn clean命令,等同于 mvn pre-clean clean。只要执行后面的命令,那么前面的命令都会执行,不需要再重新去输入命令。
 
2)Default生命周期(重点)
说明:构建的核心部分,编译,测试,打包,部署等等。
validate 验证项目是否正确且所有必要的信息都可用
initialize 初始化构建工作,如:设置参数,创建目录等。
generate-sources 为包含在编译范围内的代码生成源代码。
process-sources 处理源代码。
generate-resources 生成资源文件。
process-resources 复制并处理资源文件,至目标目录,准备打包。 
compile 编译项目的源代码。 
process-classes 为编译生成的class文件做后期工作, 例如做Java类的字节码增强。
generate-test-sources 为编译内容生成测试源代码。
process-test-sources 处理测试源代码。
generate-test-resources 生成测试所需的资源文件。
process-test-resources 复制并处理资源文件,至目标测试目录。 
test-compile 编译测试源代码。 
process-test-classes 为编译生成测试的class文件做后期处理工作。
test 使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署。 
prepare-package 执行打包前的预处理工作。
package 接受编译好的代码,打包成可发布的格式,如 JAR 。 
pre-integration-test 预集成测试。
integration-test  按需求将发布包部署到运行测试环境。
post-integration-test 执行整合测试。
verify 
install 将包安装至本地仓库,以让其它项目依赖。 
deploy 将最终的包复制到远程的仓库,以让其它开发人员与项目共享。 
在maven中,只要在同一个生命周期,你执行后面的阶段,那么前面的阶段也会被执行,而且不需要额外去输入前面的阶段,这样大大减轻了程序员的工作。
 
3)Site生命周期
pre-site 执行一些需要在生成站点文档之前完成的工作 
site 生成项目的站点文档 
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备 
site-deploy 将生成的站点文档部署到特定的服务器上