前言
关于Maven,已经不再是一个全新的工具。但由于网络中各种褒贬不一的言论太多,一时让Maven淹没于形形色色的唾沫声之中,有很多人觉得Maven的学习门槛太高(是的,笔者也是这么认为,刚接触的时候确实一头雾水,有一种想把电脑从12楼扔下去的冲动),有很多人觉得有Ant就够了,但也有人认为Maven要搭建私服纯粹是扯淡...
既然存在这么多质疑,那么笔者为什么还是要讲解关于如何在项目中使用Maven,很简单,因为笔者需要让大家知道Maven究竟能为我们“项目管理”带何种实惠?
笔者推崇Maven的理由主要有以下3点:
1、如果你每天还在不停且重复的做项目构建(编译、测试、打包、发布),那么你完全需要一种流程化及自动化的方式来帮助你完成这些基础作业层,这便是你选择Maven的理由之一;
2、如果你还在为项目中的第三方依赖库发愁,整天想着应该去哪里寻找项目依赖库,或者如何解决依赖库版本冲突问题,或者不想为每一个项目都去建立一个lib文件夹,然后把几十兆甚至上百兆的依赖库做重复的复制和粘贴工作,那么你完全需要一种规范化且高度依赖化的方式来帮助你完成这些令人头痛且纠结的工作,这便是你选择Maven的理由之二;
3、全世界都在使用Maven(比如Spring Framework、SapphireCache Framework),你还等什么呢,这便是你选择Maven的理由之三;
一、什么是Maven?
Maven是一种基于项目对象模型(POM)的项目管理工具(纯Java开发),它可以通过一小段描述信息来管理项目的构建及类库依赖。相对于Ant等传统项目纯构建工具而言,Maven所包含的功能更像是一个功能的超集。
二、下载和安装Maven
本文所有的内容将完全基于Maven3.0.4版本,其下载地址为:http://maven.apache.org/download.html。
当成功下载好Maven后,通过解压,我们可以发现Maven的目录结构为:
其中bin目录中所包含的内容为一些批处理文件,boot目录所包含的内容为Maven的自定义类装载器,conf目录中所包含的内容为Maven的核心配置文件,lib目录中所包含的内容为Maven的类库集合。
笔者将Maven解压(安装)目录为D:\Program Files\apache-maven-3.0.4\,那么接下来要做的事情就是配置环境变量,由于笔者所使用的操作系统为windows,那么所演示的操作也将基于windows系统。
配置Maven的环境变量,你需要增加如下环境变量 :
M2_HOME:D:\Program Files\apache-maven-3.0.4\
Path:%M2_HOME%\bin
当成功配置好环境变量后,我们则需要通过如下批处理命令检测是否成功安装Maven:
echo %M2_HOME%:检查Maven的安装目录;
mvn -v:查看当前Maven的版本号;
有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这时就需要为Maven配置HTTP代理。你可以在目录~/.m2/setting.xml文件中编辑如下(如果没有该文件,则复制$M2_HOME/conf/setting.xml):
- <span style="font-size: small;"><proxies>
- <proxy>
- <id>optional</id>
- <active>true</active>
- <protocol>http</protocol>
- <username>proxyuser</username>
- <password>proxypass</password>
- <host>proxy.host.net</host>
- <port>80</port>
- <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
- </proxy>
- </proxies></span>
<proxies>
<proxy>
<id>optional</id>
<active>true</active>
<protocol>http</protocol>
<username>proxyuser</username>
<password>proxypass</password>
<host>proxy.host.net</host>
<port>80</port>
<nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>
</proxies>
三、构建Maven项目
通过Maven构建一个普通的Java项目,你如果不采用m2eclipse插件,则必须配置好Maven的环境变量,否则你将无法完成项目构建。
你可以使用如下批处理命令来创建一个基于Maven的普通Java项目:
- <span style="font-size: small;">mvn archetype:generate -DgroupId=com.johngao -DartifactId=my-maven
- -Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-quickstart </span>
mvn archetype:generate -DgroupId=com.johngao -DartifactId=my-maven
-Dversion=1.0.0 -DarchetypeArtifactId=maven-archetype-quickstart
使用如上命令则可以成功创建一个基于Maven的普通Java项目,如果是第一次创建,Maven则会从远程中央仓库下载所需依赖类库至缺省的本地仓库中(${user.home}/.m2/repository),你所要做的事情仅是等待即可。
当成功创建好项目后,项目目录结构大致如下:
- <span style="font-size: small;">my-maven
- |-- pom.xml
- |-- src
- |-- main
- |-- java
- |-- com
- |-- johnago
- |-- App.java
- |-- test
- |-- java
- |-- com
- |-- johngao
- |-- AppTest.java</span>
my-maven
|-- pom.xml
|-- src
|-- main
|-- java
|-- com
|-- johnago
|-- App.java
|-- test
|-- java
|-- com
|-- johngao
|-- AppTest.java
src/main/java : Java源文件存放位置;
src/test/java : 测试代码源文件存放位置;
前面章节笔者提到过Maven是基于项目对象模型(POM)的项目管理工具,那么咱么接下来分析下项目工程目录下的POM.xml文件。
该文件的内容为:
- <span style="font-size: small;"><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/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.johngao</groupId>
- <artifactId>my-maven</artifactId>
- <packaging>jar</packaging>
- <version>1.0.0</version>
- <name>my-maven</name>
- <url>http://maven.apache.org</url>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project></span>
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.johngao</groupId>
<artifactId>my-maven</artifactId>
<packaging>jar</packaging>
<version>1.0.0</version>
<name>my-maven</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
其中最重要的3个标签为:<groupId>、<artifactId>和<version>,这3个标签定义了整个项目的经纬。
其中<groupId>标签定义了项目的所属分组(和项目所在的组织或公司关联),比如:org.springframework。而<artifactId>标签则定义了项目所属分组中的最小单位构件,比如:spring-core。<version>标签则定义了项目的版本。
四、Maven常用命令
如果需要执行如下命令,则需要将目录切换至项目路径。
1、mvn clean compile:编译命令;
执行上述命令成功build 后,Maven会在工程目录下新建target目录,该目录将包含所有通过编译的字节码文件。
2、mvn clean:清理命令;
执行上述命令将会清除工程目录下的target目录。
3、mvn test:测试命令;
执行上述命令则会执行src/test/java 目录下的所有Junit 测试代码,当然执行此命令之前会先执行编译命令。
此命令执行顺序为:mvn clean compile --> mvn test。
4、mvn package:打包命令;
执行上述命令会将项目打成jar包,并放在target目录中,当然执行此命令之前会先执行编译和测试命令。
此命令执行顺序为:mvn clean compile --> mvn test --> mvn package。
5、mvn install:安装命令;
执行上述命令则会将项目的jar包安装到本地仓库中,以便其他项目调用,当然执行此命令之前会先执行编译,测试,打包等命令。
此命令执行顺序为:mvn clean compile --> mvn test --> mvn package --> mvn install。
通过执行上面5种常用命令,我们便可以完成一个项目的完整构建。
五、使用m2eclipse构建Maven项目
前面章节笔者已经带大家走进了Maven的世界,那么接下来笔者将会演示如何在eclipse中使用Maven。由于eclipse或myeclipse目前并没有对缺省对Maven进行集成,但这并不妨碍我们在IDE中使用Maven。
笔者向大家推荐一种用于在eclipse等IDE工具中建立Maven项目的插件工具,那便是m2eclipse。接下来你将会看到,在eclipse中通过m2eclipse插件管理Maven项目是多么的简单和方便。
单击eclipse菜单栏中的Help-->Eclipse Marketplace菜单,进行m2eclipse插件的下载:
下载的过程可能比较耗费时间,在这段时间之内,你可以有2种选择。第一,你可以选择看会电视或者转发微薄来消磨时光。第二,你可以去泡杯咖啡提提神,为接下来的事情做准备...
当成功下载好m2eclipse后,我们可以先把eclipse重启,然后通过File菜单创建一个Maven项目:
此操作按照缺省选项进行,请勿手痒勾选其他选项:
由于目前我们仅是通过Maven创建一个普通的Java项目,而非Web项目,所以大家只需勾选maven-archetype-quickstart选项即可:
接下来我们只需要输入项目的GroupId、ArtifactId、Version和package等选项即可。如果并不清楚GroupId、ArtifactId、Version等属性的作用及目的,请麻烦你先查看前几张的内容。最后我们点击Finish按钮即可成功创建Maven项目。
创建好的Maven项目工程结构如下:
既然通过m2eclipse插件已经成功建立好Maven项目后,接下来要做的事情就是如何使用Maven命令进行项目构建。
右击项目,选择你需要执行的命令操作:
如果你发现你所需要执行的命令并没有包含在Run As菜单中,大可不必惊慌。我们可以通过手工添加命令的方式来执行Maven命令。假如现在我们需要添加一个mvn package命令,我们可以通过Maven build...(非Maven build)选项进行Maven命令的添加:
当命令成功添加好以后,我们便可以在Run As菜单中选择我们所在执行的命令即可:
通过m2eclipse插件,我们可以很轻松的在eclipse中进行Maven项目的管理,那么接下来我们尝试着创建一个基于Maven的Web项目,当然这和创建传统的Java项目大同小异,只是有些细节部分需要注意而已。
在创建普通Java项目的时候我们Catalog属性选择的是All Catalogs属性,勾选的是maven-archetype-quickstart选项。然而既然我们需要创建Web项目,自然需要稍稍变化一下,Catalog属性我们需要选择Internal,然后勾选maven-archetype-webapp选项即可:
创建好的Maven项目工程(Web)结构如下:
右击项目,点击Properties->Project Facets:
其实大家除了可以使用eclipse或者myeclipse集成m2eclipse插件来进行Maven的项目管理外,大家还可以尝试使用另一种IDE工具:Spring Tool Suite。该工具仅对eclipse进行了二次开发,缺省就已经集成了Maven,所以大家无需再次手动下载m2eclipse插件(下载地址为:http://www.springsource.org/spring-tool-suite-download):
六、基于Maven的依赖管理
上述章节笔者已经完全阐述了如何使用Maven来构建你的项目,那么接下来笔者将会给你演示Maven的另一项功能,那便是依赖管理。什么是依赖管理呢?其实所谓依赖管理无非也就是对咱们项目中所使用的第三方类库进行统一的管理(不要告诉笔者你的项目没有任何第三方类库的依赖,当然那只是极少数),笔者说过,不知大家是否还记得,如果你还在为项目中的第三方依赖库发愁,整天想着应该去哪里寻找项目依赖库,或者如何解决依赖库版本冲突问题,或者不想为每一个项目都去建立一个lib文件夹,然后把几十兆甚至上百兆的依赖库做重复的复制和粘贴工作,那么你完全需要一种规范化且高度依赖化的方式来帮助你完成这些令人头痛且纠结的工作,这便是本章节要讲解的重点。
假设咱们现在启动的项目依赖于Spring这个中间件,那么可能会用到Spring的spring-core-xx.jar,按照一般情况,咱们肯定会先去Spring的官网下载Spring的类库,然后通过手工的方式导入项目lib中,但这种手工的情况太麻烦,而且咱们还需要导入spring-core-xx.jar依赖的其他第三方类库。笔者敢问有谁能够记得住这些包预包之间的依赖???没有人吧,那么就耐心的看Maven如何管理依赖。
仔细观察如下POM.xml文件:
上述红色部分为依赖配置,也就是说基于Maven项目的类库依赖配置都可以通过<dependencies>标签完成。该标签中包含了:<groupId>、<artifactId>和<version>等3个标签,前面章节中,笔者给大家提到过,这3个标签共同组成了项目的经纬,所以这3个属性是至关重要的。
假设咱们现在需要使用到spring-core.xx.jar包,咱们只需要在<dependencies>标签中后续定义即可,Maven会自动从中央仓库进行对应版本的依赖库下载至本地仓库中(无私服情况下),然后通过引用的方式加载至项目中,比如:
按照一般情况来说,我们一旦导入spring-core.xx.jar包,我们仍需要将该包依赖的其他第三方类库共同导入的,但Maven这时便能够体现出他的作用,仔细看下图:
基于Maven的依赖管理后,spring-core.xx.jar所需要的其他依赖库已经成功下载至本地仓库中一起被项目引用。
如果你项目中存在其他依赖包也同样可以按照上述做法,但笔者需要提醒你的是,项目的经纬是至关重要的,如果你并没有正确定义依赖类库的经纬,Maven是无法进行下载的。
而且在后续章节中,笔者同时也会告诉你如何将定义好经纬的项目发布至私服环境中,
以及如何提供给其他项目下载至本地仓库。
相关推荐
maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装maven安装...
### Maven安装和使用详解 #### 一、Maven概述 Maven是一款强大的开源项目管理和构建工具,由Apache软件基金会维护。Maven适用于基于Java平台的项目管理,支持从小型开源库到大型企业级应用程序的构建需求。无论是...
** Maven安装包与Maven安装步骤详解 ** Maven,作为Java项目管理和构建工具,是开发者不可或缺的一部分。它简化了构建过程,通过依赖管理和项目对象模型(Project Object Model,POM)来统一项目的构建配置。以下将...
### Maven安装配置说明 #### Maven概述 Maven是一款强大的项目管理工具,主要用于Java项目的构建、依赖管理和项目信息管理。随着软件公司对项目管理规范性的需求日益增加,Maven的应用比例也在持续上升。通过Maven...
### Maven安装与配置详解 #### 一、Maven简介 Maven是一款由Apache软件基金会支持的项目管理和理解工具。它可以帮助开发者自动构建Java项目,并管理项目的依赖关系。Maven使用XML格式来描述项目的构建规则,这使得...
### Maven安装与环境变量配置详解 #### 一、Maven简介 Apache Maven 是一个软件项目管理工具,基于项目对象模型(POM),通过一小段描述信息来管理项目的构建、报告和文档。Maven 提供了一个项目对象模型(POM)来管理...
### Maven安装文件 Maven的安装文件通常以`.zip`或`.tar.gz`格式提供,你可以从Apache官方网站(https://maven.apache.org/download.cgi)下载最新版本。下载完成后,根据你的操作系统选择合适的解压工具进行解压。 ...
【Maven 安装使用详解】 Maven 是一个强大的项目管理工具,专为 Java 开发者设计,用于项目构建、依赖管理和项目信息管理。通过 Maven,开发者可以避免手动管理库文件,简化项目的构建过程,同时提供了一种标准化的...
### Maven 安装及配置详解 #### 一、Maven 的意义与优势 Maven 是一个流行的项目管理和构建工具,最初由 Sonatype 开发,现在是 Apache 软件基金会的一部分。它通过一种标准化的方式帮助开发者管理 Java 项目的...
【Maven安装与配置的详细步骤】 Maven是一款基于Java的开源项目管理工具,由Apache软件基金会开发。它采用Project Object Model(POM)的概念,将项目配置信息集中于一个名为POM.xml的文件中,使得Maven能够管理...
### Maven安装指南:详细步骤与环境配置教程 Maven是一个非常重要的项目管理和构建自动化工具,主要用于基于Java的应用程序。通过Maven,开发者可以方便地管理项目依赖、构建过程以及项目文档,大大提高了开发效率...
maven安装的文档,描述了maven的安装,环境变量配置,myeclipse配置。简单易懂,完整实用。
Maven 安装配置指南 本资源为 Maven 安装配置的详细指南,旨在帮助用户快速搭建 Maven 开发环境,并在 MyEclipse 中进行完美运行。以下是 Maven 安装配置的详细步骤: Step 1:下载 Maven 首先,需要下载 Maven ...
### MAVEN安装教程知识点详解 #### 一、环境准备与要求 在开始Maven的安装之前,需要确保以下环境已准备好: 1. **JDK 1.6**:Maven的运行依赖于Java环境,本教程中使用的是JDK 1.6。如果尚未安装,请先安装JDK ...
【 Maven 安装详解】 Maven 是一个项目管理和综合工具,它主要负责构建、依赖管理和项目信息管理。本文将详细讲解 Maven 的安装过程,帮助初学者快速掌握 Maven 的使用。 首先,我们需要准备以下工具: 1. JDK:...
### Maven安装与配置详解 #### 一、Maven简介及安装流程 Maven是一个非常流行的Java项目管理和构建工具,能够帮助开发者自动化构建过程中的许多任务,例如编译、测试、打包、部署等。通过Maven,可以有效地管理...
### 四、验证Maven安装 完成上述步骤后,打开命令行终端,输入`mvn -version`。如果正确安装,你应该能看到Maven的版本信息,表明已成功安装。 ### 五、配置Maven settings.xml Maven的配置文件`settings.xml`...
### Maven安装及Eclipse配置详解 #### Maven简介与安装步骤 **Maven**是一款由Apache组织提供的项目管理和构建工具,它能帮助开发者更好地管理项目的构建、依赖关系等。Maven的强大之处在于它提供了统一的标准流程...
6. **测试Maven安装**:通过命令行检查Maven是否正确安装,可以使用`echo %M2_HOME%`查看M2_HOME变量,以及`mvn -v`命令查看Maven版本信息,确认Maven可以正常使用。 7. **Maven的用途**:Maven通过POM文件管理项目...
"Maven安装与下载" Maven是一种基于项目对象模型(POM)的项目管理工具,由于其灵活性和可扩展性,广泛应用于 Java 项目开发中。下面我们将详细介绍 Maven 的安装和下载过程。 Maven 安装前的准备 在安装 Maven ...