Maven 入门
一、安装
下载:http://maven.apache.org/download.cgi
解压后放到指定目录,
配置环境变量
新建变量名:M2_HOME
变量值:maven路径
将%M2_HOME%\bin添加到path目录
测试配置是否生效:打开cmd,执行mvn -v 命令,查看版本信息
二、目录结构
src
main
java
test
java
pom.xml 构建文件
三、常用命令
mvn -v 查看maven版本
compile 编译
test 测试
package 生成jar包,运行此命令会自动执行compile和test
clean 删除target目录
install 安装jar包到本地仓库
archetype:generate 使用maven插件自动生成目录结构,按照提示进行选择(第一次运行自动下载以来文件)
archetype:generate -DgrouoId=组织名,公司网址反写+项目名
-DartifactId=项目名—模块名
-Dpackage=代码所所在的包名
四、坐标和仓库
坐标:用来唯一地标识jar包
例:
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version></version> 版本号
</dependency>
仓库:本地仓库和远程中央仓库,先在本地仓库寻找,若未找到则从中央仓库寻找
注:中央仓库的配置在 lib\maven-model-builder-3.3.3.jar中的org\apache\maven\model\pom-4.0.0.xml
本地仓库默认在 用户\.m2\repository 可在\setting.xml中修改
镜像仓库:中央仓库的复制品,
注:镜像仓库可在conf\setting.xml中配置镜像仓库的地址,
<mirror>
<id></id>
<mirrorof></mirrorof> 替换哪个仓库,如central
<name></name>
<url></url>
</mirror>
五、生命周期
完整的项目构建过程包括:
清理、编译、测试、打包、集成测试、验证、部署
maven生命周期
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的左右文件
post-clean 执行清理后的文件
default 构建项目
compile
test
package
install
site 生成项目站点
pre-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
六、pom.xml常用元素
<properties>
<project.build.name>tools</project.build.name>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<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">
<!-- 指定当前pom版本 -->
<modelVersion>4.0.0</modelVersion>
<groupId>反写的公司网址+项目名</groupId>
<artifactId>项目名+模块名</artifactId>
<!--
第一个0表示大版本号
第二个0表示分支版本号
第三个0表示小版本号
0.0.1
Snapshot 快照
Alpha 内部测试
Beta 公测
Release 稳定
GA 正式发布
-->
<version>0.0.1-SNAPSHOT</version>
<!--
打包方式,默认为jar,可以是war、zip、pom
-->
<packaging>war</packaging>
<!--项目描述名-->
<name>maventast Maven Webapp</name>
<!--项目地址-->
<url>http://maven.apache.org</url>
<!--项目描述-->
<description></descripthon>
<licenses></licenses>
<!--定义变量,使用方式为${变量名},例如${project.build.name}-->
<properties>
<project.build.name>tools</project.build.name>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!--依赖列表-->
<dependencies>
<!--依赖项-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<!--依赖范围 test表示此jar在test时有用-->
<scope>test</scope>
<!--设置依赖是否可选-->
<optional></optional>
<!--排除依赖传递列表-->
<exclusions>
<exclusion>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<!-- 依赖的管理,主要用于父模块中-->
<dependencyManagement>
<dependencies>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</plugins>
<finalName>maventast</finalName>
</build>
<!--子模块对于父模块pom的继承-->
<parent>
</parent>
<!--聚合多个module项目,统一编译-->
<modules>
<module>
</module>
</modules>
</project>
六、生存依赖
compile为默认依赖,编译测试运行都有效
provide在编译和测试时有效
runtime在测试和运行时有效
test只在测试
system在编译和测试时有效,与本机系统相关,可以移植性差
import导入的范围,它只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
<scope>test</scope>
七、依赖传递
八、聚合和继承
聚合:多个项目放在一起运行
<packaging>pom</packaging>
<modules>
<module>../项目文件名</module>
<module>../项目文件名</module>
</modules>
运行命令:mvn clean install
继承:
将需继承的依赖放在父项目中
<packaging>pom</packaging>
<properties>
<junit.version>3.8.1</junit.version>
</properties>
<dependencyManagement> 次标签所包含的依赖在本项目无效
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
</dependencyManagement>
子项目
<parent>
<!--父项目的坐标-->
<groupId></groupId>
<artifactId></artifactId>
<version></version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
九、使用maven创建web项目
在src\main\webapp\index.jsp的图标有x号,表示未导入servlet的api,在pom.xml中<dependency>标签加入
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<!--只在编译和测试时运行-->
<scope>provide</scope>
项目右击-Properties-project facets中选择功能模块
项目右击-Properties-Deploment Assembly中选择需要编译部署的文件