01.Maven的初步使用

一、概念

1.0 Maven是什么

  Maven 是一个项目管理工具。它负责管理项目开发过程中的几乎所有的东西。

 

2.0 Maven的生命周期

  maven把项目的构建划分为不同的生命周期(lifecycle)。粗略一点的话,它这个过程(phase)包括:编译、测试、打包、集成测试、验证、部署。maven中所有的执行动作(goal)都需要指明自己在这个过程中的执行位置,然后maven执行的时候,就依照过程的发展依次调用这些goal进行各种处理。

  这个也是maven的一个基本调度机制。一般来说,位置稍后的过程都会依赖于之前的过程。当然,maven同样提供了配置文件,可以依照用户要求,跳过某些阶段。

3.0 Maven的标准工程结构

Maven的标准工程结构如下:

  pom.xml(maven的核心配置文件)

  src

    main

      java(java源代码目录)

      resources(资源文件目录)

    test

      java(单元测试代码目录)

  target(输出目录,所有的输出物都存放在这个目录下)

    classes(编译后的class文件存放处)

4.0 Maven的"约定优于配置"

  所谓的"约定优于配置",在maven中并不是完全不可以修改的,他们只是一些配置的默认值而已。但是除非必要,并不需要去修改那些约定内容。maven默认的文件存放结构如下:

  每一个阶段的任务都知道怎么正确完成自己的工作,比如compile任务就知道从src/main/java下编译所有的java文件,并把它的输出class文件存放到target/classes中。

  对maven来说,采用"约定优于配置"的策略可以减少修改配置的工作量,也可以降低学习成本,更重要的是,给项目引入了统一的规范。

5.0 Maven坐标

maven使用如下几个要素来唯一定位某一个输出物:

5.1 groudId

定义当前Maven项目隶属的实际项目。首先,Maven项目和实际项目不一定是一对一关系,一个实际项目往往会被划分为多个模块。

5.2 artifactId 

定义实际项目中的一个Maven项目,即当前项目,推荐使用实际项目名作为artifactId的前缀。

5.3 version 

定义当前项目所处的版本。

5.4 packaging 

定义项目的类型,默认是jar,描述了项目打包后的输出。类型为jar的项目产生一个JAR文件,类型为war的项目产生一个web应用。

二、安装

2.0 配置环境变量

注意:安装maven之前,必须先确保你的机器中已经安装了JDK

1.解压压缩包(以apache-maven-3.3.9-bin.zip为例)

2.添加环境变量MAVEN_HOME,值为apache-maven-3.3.9的安装路径

                         

3.在Path环境变量的变量值末尾添加%MAVEN_HOME%in

4.在cmd输入mvn –version,如果出现maven的版本信息,说明配置成功。

2.1 本地仓储及镜像仓库配置

中央仓库访问较慢,一般使用国内淘宝的

下载的jar包,都会统一存放到本地仓库中。我们需要配置本地仓库的位置。

打开maven安装目录,打开conf目录下的setting.xml文件。

  C:Program FilesJavaapache-maven-3.3.9新建 .m2目录
  settings.xml--> 55: <localRepository>F:javamaven epository</localRepository>   本地 jar包存放地址
          159: <mirror>
              <id>UK</id>
              <name>UK Central</name>
              <url>http://uk.maven.org/maven2</url>
                <mirrorOf>central</mirrorOf>
            </mirror>

以下阿里云仓库下载较快

            <mirror>
              <id>alimaven</id>
              <name>aliyun maven</name>
              <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
                <mirrorOf>central</mirrorOf>
            </mirror>

三、pox.xml配置详解

 modelVersion是4.0.0,这是当前仅有的可以被Maven2&3同时支持的POM版本,它是必须的。

 1 <project xmlns="http://maven.apache.org/POM/4.0.0"
 2          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 3          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
 4             http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6     
 7     <!-- 基本设置 -->
 8     <groupId>反写的公司名+项目名</groupId>
 9     <artifactId>项目名+模块名</artifactId>
10 <!-- 0.0.1
11       大版本号、分支版本号、小版本号
12       snapshot快照
13       alpha内部测试
14       beta公测
15       Release稳定
16       GA正式发布
17  -->
18     <version>...</version>
19 <!--默认jar
20      war zip pom
21  -->
22     <packaging>...</packaging>
23 
24     <dependencies>
25         <dependency>
26             <groupId>org.springframework</groupId>
27             <artifactId>spring-context</artifactId>
28             <version>3.2.4.RELEASE</version>
29             <type>jar</type>
30             <!-- 依赖范围
31                 1. compile:没有声明时默认,对于编译、运行、测试三种classpath都有效;eg:spring-core
32                 2. test:测试依赖范围,只对测试classpath有效;eg:JUnit
33                 3. provideed:已提供依赖范围,对编译和测试classpath有效;eg:servlet-api
34                 4. runtime:运行时依赖,对测试和运行classpath有效;eg:jdbc驱动实现
35                 5. system:系统依赖范围:和provideed一致,但是必须通过systemPath元素显式指定依赖文件路径,不通过maven仓库解析,可能造成不可移植
36                 <scope>system</scope>
37                 <systemPath>${java.home}/lib/rt.jar</systemPath>
38              -->
39             <scope>test</scope>
40             <!-- 设置依赖是否可选  true/false 默认false 根据代码单一性原则 一般不设置true-->
41             <optional></optional>
42             <!-- 排除传递性依赖,有些jar包依赖另一些jar,而这些jar在项目中已显式引入,为避免重复可选择过滤掉 -->
43             <exclusions>
44                 <exclusion>
45                     <groupId></groupId>
46                     <artifactId></artifactId>
47                 </exclusion>
48             </exclusions>
49         </dependency>
50     </dependencies>
51 
52 
53 
54     <parent>...</parent>
55     <dependencyManagement>...</dependencyManagement>
56     <modules>...</modules>
57     <properties>...</properties>
58     
59     <!-- 构建过程的设置 -->
60     <build>...</build>
61     <reporting>...</reporting>
62     
63     <!-- 项目信息设置 -->
64     <name>...</name>
65     <description>...</description>
66     <url>...</url>
67     <inceptionYear>...</inceptionYear>
68     <licenses>...</licenses>
69     <organization>...</organization>
70     <developers>...</developers>
71     <contributors>...</contributors>
72     
73     <!-- 环境设置 -->
74     <issueManagement>...</issueManagement>
75     <ciManagement>...</ciManagement>
76     <mailingLists>...</mailingLists>
77     <scm>...</scm>
78     <prerequisites>...</prerequisites>
79     <repositories>...</repositories>
80     <pluginRepositories>...</pluginRepositories>
81     <distributionManagement>...</distributionManagement>
82     <profiles>...</profiles>
83 </project>
pom.xml

2017-08-22 22:15:53

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/hy-space/p/7413991.html