Maven使用入门/安装/配置

Maven使用入门

1. Maven概述

Maven是什么?
Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
为什么要使用Maven?
Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。
Maven的特点
Maven 和 Ant 有什么不同呢?在回答这个问题以前,首先要强调一点:Maven 和 Ant 针对构建问题的两个不同方面。Ant 为 Java 技术开发项目提供跨平台构建任务。Maven 本身描述项目的高级方面,它从 Ant 借用了绝大多数构建任务。因此,由于 Maven 和 Ant代表两个差异很大的工具,所以接下来只说明这两个工具的等同组件之间的区别,如表 1 所示:

Maven使用入门/安装/配置_第1张图片
表1

Maven常用命令

mvn archetype:generate 创建Maven项目
mvn compile 编译源代码
mvn deploy 发布项目
mvn test-compile 编译测试源代码
mvn test 运行应用程序中的单元测试
mvn site 生成项目相关信息的网站
mvn clean 清除项目目录中的生成结果
mvn package 根据项目生成的jar
mvn install 在本地Repository中安装jar
mvn eclipse:eclipse 生成eclipse项目文件
mvnjetty:run 启动jetty服务
mvntomcat:run 启动tomcat服务
mvn clean package -Dmaven.test.skip=true:清除以前的包后重新打包,跳过测试类

Maven的基本功能

• 构建:比如生成class、jar、war或者ear文件
• 生成文档:比如生成javadoc、网站文档
• 生成报告:比如junit测试报告
• 生成依赖类库:生成文档,说明项目多其他软件的依赖
• 有关SCM:SCM(Software Configuration Management),软件配置管理,比如版本控制,比如bug管理等等
• 发布:生成供发布的分发包,比如生成Struts2的分发包,供提交给用户使用
• 部署:比如,web应用程序,自动部署到指定的服务器上

maven的其他优势

  • maven不仅是构建工具,它还是依赖管理工具和项目管理工具,提供了中央仓库,能够帮我们自动下载构件。
  • 为了解决的依赖的增多,版本不一致,版本冲突,依赖臃肿等问题,它通过一个坐标系统来精确地定位每一个构件(artifact)。
  • 帮助我们分散在各个角落的项目信息,包括项目描述,开发者列表,版本控制系统,许可证,缺陷管理系统地址。
  • maven还为全世界的java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何的流行开源软件。通过衍生工具(Nexus),我们还能对其进行快速搜索
  • maven对于目录结构有要求,约定优于配置,用户在项目间切换就省去了学习成本。

2. Maven 安装以及eclipse配置

  1. 在apche官方网站http://maven.apache.org/download.cgi 下载bin;
    Maven使用入门/安装/配置_第2张图片
  2. 下载下来之后,解压,找个路径放进去, 把bin的位置设在环境变量里,新建环境变量MAVEN_HOME;


    Maven使用入门/安装/配置_第3张图片
  3. 在PATH里加入maven的bin的路径;


    Maven使用入门/安装/配置_第4张图片
  4. 由于Maven依赖Java运行环境,因此使用Maven之前需要配置Java的运行环境。下载并安装JDK,配置JDK的环境变量JAVA_HOME,否则maven将无法使用;
  5. 配置完毕后,在Windows命令提示符下,输入mvn -v测试一下,配置成功显示如图:


    Maven使用入门/安装/配置_第5张图片
  6. 配置成功后开始在Eclipse中配置Maven,点击eclipse菜单栏Help->Eclipse Marketplace搜索关键字maven到插件Maven Integration for Eclipse 并点击安装即可,如下图:


    Maven使用入门/安装/配置_第6张图片

    Maven使用入门/安装/配置_第7张图片

    Maven使用入门/安装/配置_第8张图片
  7. 安装完毕后,点击重启eclipse;
  8. 重启后,为了使得Eclipse中安装的Maven插件,同windows中安装的那个相同,需要让eclipse中的maven重新定位一下,点击Window -> Preference -> Maven -> Installation -> Add进行设置


    Maven使用入门/安装/配置_第9张图片
  9. 然后, 我们在Maven的配置界面,设置User Settings Global Settings选择maven 安装目录下conf文件夹下的settings.xml,这里我的Maven安装目录为D:\apache-maven-3.5.2\conf\settings.xml,选择你的Maven安装目录,检查Local Repository 项,如果为D:\Qrsoft\maven\repository则配置成功,否则重新配置上一步。


    Maven使用入门/安装/配置_第10张图片
  10. 设置成功即安装完成。

3. 使用

3.1 创建Maven项目
  1. 我们在Eclipse菜单栏中点击File->New->Other->Maven,在弹出的对话框中会看到,如下图所示:


    Maven使用入门/安装/配置_第11张图片
  2. 选择Maven Project,请选中Create a simple project(skip archetype selection),之后点击Next;
  3. 选择”maven-archetype-webapp";


    Maven使用入门/安装/配置_第12张图片

    填写Group id和Artifact id, Version默认,Packaging默认为jar,Name,Description选填,其他的不填(这里我已经创建过该项目了,所以会提示already exists) 。


    Maven使用入门/安装/配置_第13张图片
  4. 创建好项目后,目录如下:


    Maven使用入门/安装/配置_第14张图片
  5. 至此,项目已经创建完毕,下边开始配置;
  6. 添加Source Folder:
    Maven规定,必须创建以下几个Source Folder
    src/main/resources
    src/main/java
    src/test/resources
    src/test/java
    添加以上的Source Folder(如果已经存在,可忽略此步骤),添加完后,如下图所示:


    Maven使用入门/安装/配置_第15张图片
  7. 配置Build Path;


    Maven使用入门/安装/配置_第16张图片

    设定4个文件夹的输出Output folder,双击修改:


    Maven使用入门/安装/配置_第17张图片

    分别修改输出路径为
    src/main/resources  对应  target/classes

    src/main/java  对应  target/classes
    src/test/resources  对应  target/test-classes
    src/test/java  对应  target/test-classes

修改后如下图:


Maven使用入门/安装/配置_第18张图片
  1. 设定Libraries


    Maven使用入门/安装/配置_第19张图片
  2. 完成,接下来就可以编写自己的程序了。
3.2 Maven项目的目录约定
Maven使用入门/安装/配置_第20张图片
3.3 pox.xml解读

(1). modelVersion
指定了当前Maven模型的版本号,对于Maven2和Maven3来说,它只能是4.0.0;
(2). groupId
顾名思义,这个应该是公司名或是组织名。一般来说groupId是由三个部分组成,每个部分之间以"."分隔,第一部分是项目用途,比如用于商业的就是"com",用于非营利性组织的就是"org";第二部分是公司名,比如"tengxun"、"baidu"、"alibaba";第三部分是你的项目名
(3). artifactId
可以认为是Maven构建的项目名,比如你的项目中有子项目,就可以使用"项目名-子项目名"的命名方式
(4). Version
版本号,SNAPSHOT意为快照,说明该项目还在开发中,是不稳定的版本。在Maven中很重要的一点是,groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标,这非常重要!
在上面的这些元素之外,还有一些元素,同样罗列一下:

  1. Packing
    项目打包的类型,可以使jar、war、rar、ear、pom,默认是jar;
  2. dependencies和dependency
    前者包含后者。前面说了,Maven的一个重要作用就是统一管理jar包,为了一个项目可以build或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些依赖就被称为dependency。

说到这里,就有一个本地仓库远程仓库的概念了。官方下载的本地仓库的配置在"%MAVEN_HOME%\conf\settings.xml"里面,找一下"localRepository"就可以了(可以自己定义下载下来的jar包的存放位置,见https://www.cnblogs.com/xdp-gacl/p/3498271.html );MyEclipse默认的本地仓库的地址在"{user.home}/.m2/repository"路径下,同样找一下"localRepository"就可以找到MyEclipse默认的本地仓库了。

本地仓库和远程仓库是这样的,Maven工程首先会从本地仓库中获取jar包,当无法获取指定jar包时,本地仓库会从远程仓库(中央仓库)中下载jar包,并放入本地仓库以备将来使用。

举个例子,比方说我的项目中用到了MyBatis,那么可以这么配置:

org.mybatis

mybatis

3.2.5

之前有说过groupId、artifactId、version唯一标识一个Maven项目,有了这三个元素,我们就可以去远程仓库下载MyBatis3.2.5.jar到本地仓库了。回想我们之前的做法,如果要MyBatis的jar包,发现没有,然后去网上下载一个,需要另外的jar包,然后去网上下载一个,但是有了Maven,就方便多了,只需要配置jar包对应的dependency依赖,Maven会自动帮助我们去远程仓库中下载jar包到本地仓库中。

  1. properties
    properties是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级。
  2. build
    build表示与构建相关的配置,比如build下有finalName,表示的就是最终构建之后的名称。
3.4添加本地jar包
  1. 首先我在项目根目录中创建一个lib文件夹,将jar包拷贝到lib文件夹下:


    Maven使用入门/安装/配置_第21张图片
  2. 然后我们在maven的pom.xml中配置:

    com.localjar.jar1
    jar1
    0.0.1
    system
    ${project.basedir}/lib/hadoop-ext.jar



    com.localjar.jar2
    jar2
    0.0.1
    system
    ${project.basedir}/lib/mr.proj.jar


    这里的groupId和artifactId以及version都是可以随便填写的 ,scope必须填写为system,而systemPath写现在我们jar包的地址就可以了;
3.5 添加外部jar包
  1. 去mvnrepository 官网 http://mvnrepository.com/ 查找需要的jar包,复制dependency代码到pom.xml中即可。
    例如想查找org.apache.commons.lang.StringUtils,可以输入commons,
    Maven使用入门/安装/配置_第22张图片

    Maven使用入门/安装/配置_第23张图片

    点一个适合的版本,例如我选2.6:
    Maven使用入门/安装/配置_第24张图片

    把代码拷贝到pom的中即可。
    Maven使用入门/安装/配置_第25张图片

4. Maven入门使用常见问题

说明:这些问题有的是从网上找的,有的是我自己遇到的,能否解决您的问题视情况而定,具体问题还要具体分析,不行就找度娘哈。

  1. 我从SVN上下载了一个以Maven构建的工程,下载完毕没有jar包怎么办?
    从资源库上下载下来的Maven工程,是没有jar包的,此时可以这么做:
    (1)删除Maven工程,但是删除的时候不要删除本地工程里面的Maven工程,只删除MyEclipse中的Maven工程
    (2)右键Import->Maven4MyEclipse->Existing Maven Projects,导入你的Maven工程,此时MyEclipse在构建工程的时候,假如你的本地仓库中没有dependcy中的jar包,便会去远程仓库下载jar包到本地仓库中。你的工程导入完毕之后,Library应该是这样的:


    Maven使用入门/安装/配置_第26张图片
  2. 重新下载Maven工程所依赖的jar包、导入jar包都需要触发Maven工程的build workspace,那么如何才能触发Maven工程的build workspace?
    找到一个pom.xml,随便修改一下,加一个空格、减一个空格什么的,ctrl+s保存一下,便会触发Maven工程的build workspace了
  3. 本地仓库的目录结构是什么样子的?
    groupId、artifactId、version确定一个唯一的Maven,比方说我有一个mybatis的dependcy:

    org.mybatis
    mybatis
    3.2.5

    那么mybatis的jar包应该在%Maven仓库地址%\org\mybatis\mybatis\3.2.5\这一路径下,看到了吧,先groupId,再mybatis,最后version,每个名字都是一个文件夹的名字
  4. 有些jar包在dependcy里面有配置,Import了Maven工程,下载完工程所依赖的jar包之后,发现本地仓库里面却没有,怎么办?
    可能是原先下载jar包的时候出了什么问题,从artifactId目录开始删除以下的所有文件/文件夹,然后触发一次Maven工程的build workspace就可以了
  5. 本地仓库中确定已经有jar包了,工程里面却报错,说找不到jar包,该怎么办?
    应该有很多解决办法,目前解决的一种办法是,MyEclipse->Window->Preferences->搜索Maven->User Settings,Update Settings和Reindex点一下就好了。另外,可以尝试一下把本地Maven仓库内的jar包删除一下,然后重新build workspace,可能也可以。
  6. 项目上有红叉提示错误,但是整个项目没有任何文件有错,怎么办?
    解决办法就是:
    右键项目,【Maven】--》【Update Project Configuration...】即可。
  7. Maven构建项目后项目报Error错误Java compiler level does not match the version of the installed Java project facet。
    项目->右键->Project Facets->修改facets中java版本(下拉箭头出)为要用的版本
    Maven构建项目需注意
    1.项目右键->Preferences->buildpath->jdk版本
    2.项目右键->Preferences->javacompiler->jdk版本
    3.项目右键->Preferences->ProjectFacets->jdk版本

先讲这些哈,如有错误,欢迎指正。
喜欢别忘点个攒哈,笔芯~

你可能感兴趣的:(Maven使用入门/安装/配置)