MAVEN版本:3.3.9

JAVA版本:JDK1.8

1.MAVEN下载与安装

1)下载地址:http://maven.apache.org/download.cgi

2)下载到本地后,解压zip文件到对应的目录下。如C:\apache-maven-3.3.9

3)配置环境变量:

打开系统的环境变量配置界面,在系统环境变量中添加变量M2_HOME,值为:C:\apache-maven-3.3.9,添加完成后修改Path中的值,在最后追加%M2_HOME%\bin; 点击确认。

4)测试安装是否成功:

在cmd命令行中输入:mvn -version查看输出,测试输出如下:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:4
 7+08:00)
 Maven home: C:\apache-maven-3.3.9\bin\..
 Java version: 1.7.0_79, vendor: Oracle Corporation
 Java home: C:\Java\jdk1.7.0_79\jre
 Default locale: zh_CN, platform encoding: GBK
 OS name: "windows 7", version: "6.1", arch: "x86", family: "windows"注意:如果没有Path值最后没有分号( ; )需要添加分号后再添加值。

2.配置本地仓库目录
打开maven的安装目录,修改conf/setting.xml
添加配置:<localRepository>C:/apache-maven-3.3.9/repo/</localRepository>,这样,本地仓库目录就设置完毕。

3.设置maven中央仓库
修改conf/setting.xml,在<mirrors>标签中添加仓库的配置: 
  <mirror>
     <id>mirrorId</id>
       <mirrorOf>central</mirrorOf>
       <name>maven repository.</name>
       <url>http://repo1.maven.org/maven2/</url>
    </mirror>4.maven的常用命令
 mvn -version:查看maven版本
 mvn compile :编译
 mvn test 执行测试用例
 mvn package 打包
 mvn clean 清除编译文件
 mvn install 安装jar包到本地仓库

5.pom.xml文件一级标签解释
<groupId></groupId>组织机构域名反转+项目名
<artifactId></artifactId>项目名+模块名
<version></version>版本号
<packaging></packaging>打包格式,默认是jar,还有其他的,如war , zip , pom
注意:版本号一般由格式如:0.0.0(-SNAPSHOT , -ALPHA , -BETA , -RELEASE )
第一个0:大版本号
第二个0:分支版本号
第三个0:小版本号,或修复版本号
版本号追加信息:
SNAPSHOT:快照版
ALPHA :内测版
BETA :公测版
RELEASE :稳定版
GA:General Availability 正式发布版

6.pom.xml依赖标签(dependencies)解释
<!-- 依赖列表 -->
<dependencies>
<!-- 依赖项 -->
<dependency>
<groupId></groupId><!-- 组织机构域名反转+项目名 -->
<artifactId></artifactId><!-- 项目名+模块名 -->
<version></version><!-- 版本号 -->
<type></type> <!-- 类型 -->
<scope></scope> <!-- 依赖范围 -->
<optional></optional><!-- 设置依赖是否为可选,默认为false ,则继承所有依赖-->
<exclusions><!-- 排除依赖传递列表 -->
<exclusion></exclusion><!-- 排除的依赖项 ,如当一个项目A依赖项目B,而项目B同时依赖项目C,如果项目A中因为各种原因不想引用项目C,在配置项目B的依赖时,可以排除对C的依赖 -->
</exclusions>
</dependency>
</dependencies>
注意:
1)scope主要是用于指定在编译、测试、运行三种不同场景中的classpath的依赖。
其中,scope的值如下:
compile:默认,在编译测试和运行时都有效(如项目代码)
provided:只在编译和测试时有效,运行时不会被加入(如JAVAEE中需要使用的servlet-api.jar,因为容器中相关依赖中已经加入,则不需要在运行时再次添加进去)
runtime:在测试和运行时有效,编译时不会加入(如JDBC驱动的实现,只有在测试和运行时需要用到,而在编译时不需要)
test : 只在测试时有效,如junit相关jar包
system:同provided,但是需要指定本地的路径,可移植性差,不建议使用
import:导入的范围,只用于dependencyManagement中,用于从其他pom中导入相关的dependency依赖。

2)optional中,当值为false,则指向默认为继承的;为true时,指向需要显式引入。

7.pom.xml其他相关标签解释
<!-- 依赖管理,主要用与在父类模块进行定义,用于子模块继承,如多个模块使用到了junit,可将junit定义于此 -->
<dependencyManagement>
<dependency>
</dependency>
</dependencyManagement>
dependencyManagement与dependencies区别在,前者主要用于定义子类pom.xml依赖的版本,子类pom.xml添加父类pom.xml中的依赖时可不写version,默认用依赖管理(dependencyManagement)中定义的版本号,而dependencies中定义的依赖能被所有的子类pom.xml继承。
<!-- 为构建模块提供相应支持 -->
<build>
<!-- 插件列表 -->
<plugins>
<plugin>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugin>
</plugins>
</build>

<!-- 指定当前模块需要继承的父模块 -->
<parent></parent>

<!-- 指定需要编译的模块列表 -->
<modules>
<!-- 模块 -->
<module></module>
</modules>

8.依赖传递


9.依赖原则

1)短路优先。例如:①A -> B -> C -> X(jar),同时,②A -> D -> X(jar),此时依赖了相同jar,则优先使用②中的X(jar)

2)路径相同,先声明先优先。