Maven学习笔记-01-Maven入门

时间:2023-03-08 22:20:15

一 Maven的基本概念

  Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。

1  项目构建  

  项目构建过程包括【清理项目】->【编译项目】->【测试项目】->【生成测试报告】->【打包项目】->【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

Maven学习笔记-01-Maven入门

2 依赖管理

  依赖指的是jar包之间的相互依赖,比如搭建一个Struts2的开发框架时,光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。

3 使用Maven的好处

  Maven的好处: 约定优于配置(Convention Over Configuration)  

  Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

二 Maven下载

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

Maven学习笔记-01-Maven入门

  下载完成后,得到一个压缩包Maven学习笔记-01-Maven入门,解压后可以看到maven的组成目录

Maven学习笔记-01-Maven入门

Maven目录分析

  • bin:含有mvn运行的脚本
  • boot:含有plexus-classworlds类加载器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven运行时所需要的java类库
  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

三 Maven安装

Maven 下载是以最新的Maven版本为例

1  首先要确保电脑上已经安装了JDK(要jdk 1.6+的版本),配置好JDK的环境变量,使用如下的两个命令检查检查JDK安装的情况。(如果没有安装JDK,请参照JavaWeb学习总结-01 JavaWeb开发入门

echo %JAVA_HOME%
java -version

Maven学习笔记-01-Maven入门

2 对apache-maven-3.3.9.zip进行解压缩

  对apache-maven-3.3.9.zip进行解压缩,解压缩到的目录不要有中文。比如解压缩到 d:/installed_software 目录下。

3 设置系统环境变量: M2_HOME

注意: 配置是以LZ的开发环境为例,与上面的下载的Maven最新版会有所出入。

Maven学习笔记-01-Maven入门

4 设置环境变量Path,将%M2_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开,如下图所示:

Maven学习笔记-01-Maven入门

5 查看 maven版本,输入以下命令

mvn -version

如果控制台提示:mvn不是内部或外部命令,也不是可运行的程序或批处理文件,需要在在Path中添加:

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;

  然后重新启动cmd控制台可以正常打印出maven版本

四 Maven的简单使用

4.1、Maven项目的目录约定MavenProjectRoot(项目根目录)
   |----src
   |     |----main
   |     |         |----java ——存放项目的.java文件
   |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
   |     |----test
   |     |         |----java ——存放所有测试.java文件,如JUnit测试类
   |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
   |----target ——项目输出位置
   |----pom.xml ----用于标识该项目是一个Maven项目

4.2 使用Eclipse创建简单Maven项目

  Eclipse -> File -> New -> Maven Project -> 选择 Maven的模板类型为 “Maven-archetype-quickstart

Maven学习笔记-01-Maven入门

Group Id : com.test

Artifact Id : Testmaven

  GroupId代表公司名称,ArtifactId代表项目名称。

  pom.xml文件中的内容如下:

<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></modelVersion>

    <groupId>com.test</groupId>
    <artifactId>TestMaven</artifactId>
    <version>-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>TestMaven</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version></version>
        </dependency>
    </dependencies>

</project>

4.3  编写测试类

Test.java

package com.test.TestMaven;

public class Test {

    public static void main(String[] args) {
        System.out.println("hello maven !");
    }
}

4.4 使用maven命令编译JAVA文件

  进入工程根目录,然后使用 "mvn compile" 命令进行编译。

Maven学习笔记-01-Maven入门

  使用Maven编译完成之后,在项目根目录下会生成一个target文件夹

Maven学习笔记-01-Maven入门

  打开target文件夹,可以看到里面有一个classes文件夹,classes文件夹存放的就是编译成功后生成的.class文件

4.5 使用"mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉

  执行完"mvn clean"命令后,target文件夹就会被删除了。

4.6 常用Maven命令总结

编译源代码: mvn compile
运行测试:mvn test
打包:mvn package
清除产生的项目:mvn clean   

五 修改从Maven中心仓库下载到本地的jar包的默认存储位置

  从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home}表示当前登录系统的用户目录(如"C:\Users\gacl"),如下图所示

Maven学习笔记-01-Maven入门

Maven学习笔记-01-Maven入门

  Jar包存放在这个位置不太好,希望能够自己定义下载下来的jar包的存放位置,可以自己设置下载到本地时的jar包的存放目录。在“D:\”目录下创建一个“maven_jar”文件夹

  找到apache-maven \conf目录下的settings.xml文件

Maven学习笔记-01-Maven入门

  加上下面的代码:

<localRepository>D:/maven_jar</localRepository>

Maven学习笔记-01-Maven入门

  这样就可以把jar包下载到我们指定的D:/maven_jar目录中了.把jar包下载到本地的好处就是: 当编译时,会优先从本地的jar包去找,如果本地存在,就直接拿来用,如果不存在,就从Maven的中心仓库去下载.

  第一次执行"mvn compile"和"mvn clean"这两个命令时,Maven会去*仓库下载需要的jar包,而第二次执行这两个命令时,由于所需的jar包已经在本地的仓库中存储,所以就可以直接拿来用了,这样就省去了去*仓库下载jar包的时间。 

六 Maven异常处理 

 在导入一个Maven项目之后发现有一个如下的错误:

Project configuration is not up-to-date with pom.xml. Run project configuration update

解决办法1:

  在项目上右键 ->【Maven】->【Update Project 】

解决办法2:

  在Window -> Prefrence中打开Problems 视图,在Problems中右击相关的Errors,并点击Quick Fix后即可fix。

解决办法3:

Eclipse -> Project -> Clean | Clean projects selected below,选中要编译的eclipse工程,然后点击ok按钮进行编译。

在命令行输入 mvn package,对项目进行打包操作。

七 maven依赖关系中Scope的作用

<dependency>中还引入了<scope>,它主要管理依赖的部署。目前<scope>可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

八 pom.xml文件中的groupId和artifactId到底该怎么定义?

  有如下地址可以查询,输入jar包的基本名称就可以查询到配置方法。

http://mvnrepository.com/

参考资料:

https://my.oschina.net/zh119893/blog/276090

http://www.cnblogs.com/fnng/archive/2011/12/02/2272610.html

http://blog.csdn.net/wfp458113181wfp/article/details/26366397