1. Maven简介
Maven主要服务于基于java平台的项目构建、依赖管理和项目信息管理。
Maven项目对象模型,是通过其描述信息来管理项目的构建、报告和文档的软件项目管理工具,支持从网络下载的功能,采用xml作为配置文件格式。
Maven专注依赖管理,使用java编写。
1.2 Maven的四大特性
1.2.1 依赖管理系统
通过修改配置文件进行jar包管理升级等。
使用groupId、artifactId、version组成的Coordination(坐标)唯一标识一个依赖。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
Maven坐标为各种组件引入了秩序,任何一个组件都必须明确定义自己的坐标。
- groupId:定义当前Maven项目隶属的实际项目-公司名称。(jar包所在仓库路径)
- artifactId:定义实际项目中的一个Maven模块-项目名。
- version:定义Maven项目当前所处的版本。
1.2.2 多模块构建
在Maven中定义一个parent POM 作为一组module的聚合POM,在该POM中使用<modules>
标签定义一组子模块。parent POM 中的bulid配置以及依赖都会自动继承给自module。
1.2.3 一致的项目结构
Maven制定了一套项目目录结构作为标准的java项目结构。
1.2.1 一致的项目构建模型和插件机制
<build>
<finalName>maven-web</finalName>
<!--添加web部署的插件-->
<plugins>
<!--Jetty插件-->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty</artifactId>
<version>6.1.25</version>
<configuration>
<!--热部署,每10秒扫描一次-->
<scanIntervalSeconds>10</scanIntervalSeconds>
<!--指定当前项目的站点名-->
<contextPath>/maven03</contextPath>
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>9090</port><!--设置启动的端口号-->
</connector>
</connectors>
</configuration>
</plugin>
<!--Tomcat插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>8081</port><!--启动端口 默认8080-->
<path>/test</path><!--项目站点名,即对外访问路径-->
<uriEncoding>UTF-8</uriEncoding><!--字符集编码 默认ISO-8859-1-->
<server>tomcat7</server><!--服务器名称-->
</configuration>
</plugin>
</plugins>
</build>
2. Maven的安装配置和目录结构
2.1 Maven的安装配置
- JDK版本1.7及以上版本
- 下载Maven:
https://maven.apache.org/download.cgi
- 配置环境变量
配置系统环境变量MAVEN_HOME,将bin目录配置到path变量中 - 检查Maven是否安装成功
打开dos窗口,执行mvn -v
2.2 Maven项目目录结构
- ${basedir}:存放pom.xml和所有的子目录
- ${basedir}/src/main/java:项目的java源代码
- ${basedir}/src/main/resources:项目的资源,比如property文件
- ${basedir}/src/test/java:项目的测试类
- ${basedir}/src/test/resources:测试使用的资源
pom.xml
<?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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!--
groupId:定义了项目属于哪个组,这个组往往和项目所在公司存在关联
artifactId:定义了当前Maven项目在组中唯一的ID
version x.x.x-里程碑
第一个x 大版本,有重大变革
第二个x 小版本,修复bug,增加功能
第三个x 更新
里程碑版本:
SNAPSHOT 快照,开发版
alpha 内部测试
beta 公开测试
Release | RC 发布版
GA 正常版本
-->
<groupId>com.xxxx</groupId>
<artifactId>maven-web</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>maven-web Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties