当仅仅使用IDE工具而不使用项目管理工具开发Java Web程序的时候,会存在一些不便:
- 去哪里下载下载依赖包,不同版本如何管理?
- 编写源码、配置文件时,目录结构怎么定?
- 编译、测试、打包、发行的构建流程不统一。
- 项目代码共享以及依赖问题。
- 版本如何管理?
Maven是什么
- Apache基金会出品
- 开源
- java写的
- 通常把Maven理解成一个项目构建和依赖管理工具
Maven的优势
- 约定(惯例)优先原则。Maven默认限定了目录结构,减少了从一个项目到另一个项目的学习成本。
- 三方依赖管理。远程仓库,第三方jar包都可以在其中下载,解决了依赖的维护问题。
- Maven仓库对jar包(artifact)进行统一管理,避免jar文件的重复拷贝和版本冲突
- 提供了一致的项目构建管理方式。把项目构建过程中的操作抽象成了生命周期,Maven定义了每个生命周期定义的操作。这样会减少项目构建的工作量。只需mvn install一条命令,项目就构建好了。
- 插件式的构架,大量的可重用插件,很多构建逻辑都有可用的插件。
- 很方便的集成IDE,eclipse、IDEA等都对其集成的很好。
- 用Maven可以方便的创建项目,给予archetype可以创建多种类型的java项目。
- 团队开发,Maven管理项目的RELEASE和SNAPSHOT版本,方便多模块(Module)项目的各个模块之间的快速集成。
- 开源项目使用Maven,大家都使用Maven。
Maven的安装
- 首先要确保电脑上已经安装了JDK
Windows下Maven的安装
- 下载安装包。
- 解压缩。
- 配置系统环境变量。
- 计算机属性->高级系统环境变量->高级->环境变量->系统变量中新建。
- 增加环境变量。
- MAVEN_HOME=D:\apache-maven-3.0.5
- PATH中添加到maven安装目录下的bin目录:D:\apache-maven-3.0.5\bin;
- 确定保存配置。
- 确定保存配置。
- 验证
- 打开一个新的cmd窗口。
- 输入mvn -version,出现版本信息证明安装完毕。
Linux下Maven的安装
- 下载安装包。
- 通过tar或unzip进行解压缩:tar -zxvf apache-maven-3.0.5-bin.tar.gz。
- 配置环境变量。
- sudo vim /etc/profile 在最下面增加Maven的环境变量。
- export MAVEN_HOME=/developer/apache-maven-3.0.5。“=”后面是安装在系统中Maven解压缩后的位置。
export PATH=$PATH:$MAVEN_HOME/bin
- 执行source /etc/profile,使之生效。
- 执行mvn -version ,出现版本信息证明安装完毕。
pom.xml
- pom.xml是Maven识别的文件,maven就是通过这个文件做文件管理的。
<?xml version="1.0" encoding="UTF-8"?>
<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>
<packaging>war</packaging>
<name>Restaurant</name>
<groupId>com.meteor</groupId>
<artifactId>Restaurant</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
- groupId,组织,公司名、团体名、小组名。一般用java包的方式命名。
- artifactId,项目标识符。表示在groupId下的某一个项目,在artifactId中尽可能不用”.”。
- version,版本号。用是否有SNAPSHOT来判断项目是否是一个正式发布版本还是快照版本,在正式发布版时,把SNAPSHOT去掉就可以了。
- packaging,类型,war表示web项目。
- dependencies,项目的依赖。
- groupId,artifactId和version三个标签合起来是项目坐标,不能重复。
Maven基本命令
- mvn archetype:generate,使用模版生成项目。
- mvn compile, 编译源代码。
- mvn test,单元测试。
- mvn package,用来打包。
- mvn deploy,部署。
- mvn site,生成项目相关的站点,在线文档。
- mvn clean,清理。
- mvn install,把包安装到本地仓库,可以让其他项目进行依赖。
Tomcat插件
- Tomcat官方提供的一个Maven集成Tomcat插件,实现maven内嵌的启动tomcat
- 详细帮助:mvn help:describe -Dplugin=tomcat7
- 常见命令
- mvn tomcat7:run,启动一个嵌入式的Tomcat实例,这个Tomcat会运行在maven中,会把项目自动部署好,调试时非常方便。
- mvn tomcat:deploy
- mvn tomcat:undeploy