1、介绍

Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。

所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。

目前Apache下绝大多数项目都已经采用Maven进行管理。

而Maven本身还支持多种插件,可以方便更灵活的控制项目 Maven的核心 其实不做什么实际的事情,除了解析一些 XML 文档,管理生命周期与插件之外,它什么也不懂。

Maven 被设计成将主要的职责委派给一组 Maven 插件,这些插件可以影响 Maven 生命周期,提供对目标的访问。

1.1 Maven和Ant的比较?

Ant:你需要告诉它做什么,怎么做,做完放哪

在Ant中,你需要明确告诉它你想让它做什么,需要一步步的告诉它源码在哪,编译完的class文件放哪,然后你还想打成war包

Ant是显示的调用,它没有约定一个项目一般目录结构,你必须明确的告诉它目录在哪,目录里是什么?

Ant没有生命周期

Maven

Maven拥有约定:约定了什么目录放什么

Maven是声明式的:所有的操作都在pom.xml中,其他的交给maven

Maven有生命周期:在一个Maven的生命周期中会有一系列的步骤被执行,Maven会运行很多插件的目标。

2、搭建Maven开发环境

下载Maven: http://maven.apache.org/download.html

然后解压到一个目录即可

2.1 配置环境变量

添加MAVEN_HOME:maven的安装目录

然后在path中添加路径到maven的主目录的bin目录下

例如:MAVEN_HOME:D:\apache-maven-3.3.9

path的最前面添加:D:\apache-maven-3.3.9\bin;

2.2 测试安装是否成功

打开cmd输入:mvn -v

显示Apache Maven 3.3.9 版本信息则成功

2.3 配置Maven的本地仓库位置

所谓本地仓库,就是maven下载的jar存放路径(默认在用户的.m2目录下)

默认Maven的本地仓库位置一般在c盘的用户目录下,这样会占空间。一般要调整仓库的位置

打开apache-maven-3.3.9\conf目录下的settings.xml文件

找到如下行,在下方添加一行

  1. <!-- localRepository
  2. | The path to the local repository maven will use to store artifacts.
  3. | Default: ~/.m2/repository
  4. <localRepository>/path/to/local/repo</localRepository>
  5. -->

修改为自己的仓库位置

  1. <localRepository>E:/JavaDev/maven/repository</localRepository>

最后还要把刚才设置的 settings.xml文件拷贝到本地仓库E:/JavaDev/maven/repository目录下

3、Maven的约定

在没有自定义的的情况下:

java源代码假定是在basedir/src/main/java下资源配置文件假定是在basedir/src/main/java下资源配置文件假定是在{basedir}/src/main/resources下

测试代码假定是在basedir/src/test下测试使用的资源假定是在basedir/src/test下测试使用的资源假定是在{basedir}/src/test/resources下

编译好的class文件假定是在basedir/target/classes下生成的jar包和war包假定是在basedir/target/classes下生成的jar包和war包假定是在{basedir}/target下

pom.xml文件在${basedir}下

4、Maven项目类型

maven-archetype-j2ee-simple (J2EE 项目)

maven-archetype-portlet (门户)

maven-archetype-quickstart (一般 Java project)

maven-archetype-site (复杂站点)

maven-archetype-site-simple (简单站点)

maven-archetype-webapp (Java Web 站点)

5、Maven的安装目录

bin : 该目录包含了mvn运行的脚本,这些脚本用来配置Java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。

boot : 该目录只包含一个文件, 以 maven 3.0 为例, 该文件为 plexus-classworlds-2.2.3.jar。

plexus-classworlds :是一个类加载器框架,相对于默认的 java 类加载器,它提供了更丰富的语法以方便配置,Maven 使用该框架加载自己的类库

conf : 该目录包含了一个非常重要的文件settings.xml。

lib : 该目录包含了所有 Maven 运行时需要的 Java 类库。其其中Maven核心的JAR文件为(maven-.-uber.jar)

Maven入门-1.介绍及搭建开发环境的更多相关文章

  1. GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  2. python入门到精通[一]:搭建开发环境

    摘要:Python认识,及在windows和linux上安装环境,测试是否安装成功. 1.写在前面 参加工作也有5年多了,一直在做.net开发,近一年有做NodeJS开发.从一开始的不习惯,到逐步适应 ...

  3. maven实战(01)_搭建开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

  4. 【转载】Maven+druid+MyBatis+Spring+Oracle+Dubbo开发环境搭建

    原地址:http://blog.csdn.net/wp1603710463/article/details/48247817#t16 Maven+druid+MyBatis+spring+Oracle ...

  5. ESP32与MicroPython入门-01 搭建开发环境

    ESP32简介 ESP32 是上海乐鑫公司开发的一款比较新的32位微控制器,它集成了WiFi及蓝牙等功能,有着性能稳定.功耗低.价格低廉等特点,非常适用于物联网开发,但也可以作为普通的MCU使用. E ...

  6. Flutter入门教程(二)开发环境搭建

    学习Flutter,首先需要搭建好Flutter的开发环境,下面我将一步步带领大家搭建开发环境并且成功运行flutter项目. Flutter环境配置主要有这几点: 系统配置要求 Java环境 Flu ...

  7. Android移动APP开发笔记——最新版Cordova 5.3.1(PhoneGap)搭建开发环境

    引言 简单介绍一下Cordova的来历,Cordova的前身叫PhoneGap,自被Adobe收购后交由Apache管理,并将其核心功能开源改名为Cordova.它能让你使用HTML5轻松调用本地AP ...

  8. Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境

    Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. The ...

  9. 物理引擎Havok教程(一)搭建开发环境

    物理引擎Havok教程(一)搭建开发环境 网上关于Havok的教程实在不多,并且Havok学习起来还是有一定难度的,所以这里写了一个系列教程,希望可以帮到读者.这是第一期. 一.Havok物理引擎简单 ...

随机推荐

  1. mysql 大表优化

    当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 转自:https://segmentfault.com/a/1190000006158186 单表优化 除非单表数据未 ...

  2. 【原创】PHPstorm本地修改同步保存到远程服务器

    PHPstorm设置本地修改的代码同步保存到远程服务器: 设置里面搜索“Deployment”,选择+号,然后选择SFTP: 填写远程主机的信息: 然后选择Mappings,填写本地代码路径和远程主机 ...

  3. HDU2588:GCD(欧拉函数的应用)

    题目链接:传送门 题目需求:Given integers N and M, how many integer X satisfies 1<=X<=N and (X,N)>=M.(2& ...

  4. Gitlab汉化为中文版

    查看当前的gitlab版本号 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION 11.1.4 打开这个网址:https://gitlab.co ...

  5. mysql key index区别

    看似有差不多的作用,加了Key的表与建立了Index的表,都可以进行快速的数据查询.他们之间的区别在于处于不同的层面上. Key即键值,是关系模型理论中的一部份,比如有主键(Primary Key), ...

  6. JS 动态加载脚本 执行回调

    JS 动态加载脚本  执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件 ...

  7. Qt 引用头文件 QT_BEGIN_NAMESPACE QT_END_NAMESPACE

    Qt里面引入头文件的两种方式: 1. #include <QMdiArea> #include<QSplashScreen> 2. QT_BEGIN_NAMESPACE cla ...

  8. DNS服务器配置实践

    实验背景:在Linux系统上配置主要DNS服务器和辅助DNS服务器,所在域名为example.com,子网为192.168.X.0. 启动已安装LINUX系统,进行DNS服务器配置. 一.配置主要DN ...

  9. zoj3822

    这题说得是给了一个n*m的棋盘,每天在这个棋盘中放置一个棋子,不能放在之前已经摆放过得地方,求最后使得每行每列都有至少一个棋子的期望天数是多少,这样我们考虑怎么放,放哪里,显然数据大而且不知道状态怎么 ...

  10. Flume同时输出数据到HDFS和kafka

    cd /usr/local/flume/conf vim flume-exec-total.conf ## Explain #通过sink把数据分别输出到kafka和HDFS上 # Name the ...