资源:
maven 依赖jar包:http://mvnrepository.com/
Apache官网maven插件:http://tomcat.apache.org/maven-plugin.html
1.maven的目录结
构
src
-main
-java
-package
-test
-java
-package
-resources
2.maven命令
mvn -v 查看maven版本
compile 编译
test 测试
package 打包
clean 删除target
install 安装 jar 包到本地仓库其中,mvn install 命令,示例如下:maven01和maven02为两个工程:![]()
maven02中的类需要引用maven02中的类:![]()
maven01
![]()
maven02
直接编译maven02会报错,找不到maven01中的类,所以首先打包(mvn install)maven01,将maven01打包放入本地仓库,再将maven01的坐标配置到maven02的pom中,这样,在编译maven02的时候会去本地仓库中找到maven01,编译成功!
![]()
3.自动创建目录的两种方式:
1)mvn archetype:generate 按照提示输入相应值
2)mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
1)mvn archetype:generate 按照提示输入相应值
2)mvn archetype:generate -DgroupId=组织名,公司网址的反写+项目名
-DartifactId=项目名-模块名
-Dversion=版本号
-Dpackage=代码所存在的包名
4.maven仓库
1)坐标:构件的唯一标识
2)仓库:管理项目的依赖
2.1. 本地仓库:项目中依赖的jar包会存放在本地仓库,默认在C盘用户的.m2文件夹中,需在setting.xml中修改其位置,以防重装系统删除:
2.1. 本地仓库:项目中依赖的jar包会存放在本地仓库,默认在C盘用户的.m2文件夹中,需在setting.xml中修改其位置,以防重装系统删除:
2.2. 远程仓库
2.2.1全球中央仓库:本地仓库找不到的依赖会去全球中央仓库中找(https://repo.maven.apache.org/maven2),全球中央仓库的配置在maven 安装目录中 lib 文件夹下的 maven-model-builder.jar 中的pom-4.0.0.xml中:
2.2.2镜像仓库(国内):因为全球中央仓库的服务器在国外,有时候访问不了,所以需配置国内的镜像仓库(http://maven.oschina.net/content/groups/public),具体配置在 maven 安装目录下的 conf 文件夹下的 setting.xml 中:
5.eclipse 中创建 maven 工程
1) eclipse4.0版本以上都默认安装了maven插件,无需单独下载安装。
2) eclipse中需要做如下设置:
jre:
maven installations:
3)创建maven工程如下:
第一步:
finish之后的项目结构:
第二步:
右键工程,run-->build...,报错
为jre添加参数(注意,M2_HOME为环境变量中所配置的maven安装路径):
finish后重新编译工程,成功!
6.生命周期
package 命令中clean和test会自动运行
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(核心)
compile test package install
site 生成项目站点
pre-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
package 命令中clean和test会自动运行
clean 清理项目
pre-clean 执行清理前的工作
clean 清理上一次构建生成的所有文件
post-clean 执行清理后的文件
default 构建项目(核心)
compile test package install
site 生成项目站点
pre-site 在生成项目站点前要完成的工作
site 生成项目的站点文档
post-site 在生成项目站点后要完成的工作
site-deploy 发布生成的站点到服务器上
maven本身的功能很少,其强大的功能由插件提供,如source插件(phase为阶段):
7.pom.xml解析
1)pom常用元素详解
2)依赖范围:scope
compile:默认的范围,编译、测试、运行都有效
provided:编译、测试时有效。比如servletAPI,因为web容器已经包含该jar包,所以在运行阶段不需要,故设置为provided
runtime:测试、运行时有效,如jdbc API
test:测试时有效,如junit
provided:编译、测试时有效。比如servletAPI,因为web容器已经包含该jar包,所以在运行阶段不需要,故设置为provided
runtime:测试、运行时有效,如jdbc API
test:测试时有效,如junit
system:编译、测试时有效,但因为与本机系统相关联,所以可移植性差
import:导入的范围,只使用在dependencyManagement中,表示从其他的pom中导入dependency的配置
3)传递依赖:maven工程具有传递依赖的特性,比如A依赖B,B依赖C,那么在编译A的时候,A就会对C产生依赖。若想去除A对C的依赖,则使用 exclusions。
4)依赖冲突:多个依赖中有不同版本的jar
短路优先:A->B->C-X(2.0jar)
A->D->X(2.4jar)
A->D->X(2.4jar)
则下载2.4jar
先声明优先: 依赖长度相同,哪个依赖先声明则下载对应依赖中的jar
先声明优先: 依赖长度相同,哪个依赖先声明则下载对应依赖中的jar
5)聚合和继承
5.1 聚合:批量打包(注意在聚合的pom文件中,packaging属性修改为pom)
5.2 继承
parent项目中,可删除src中的main和test目录,pom文件中用<dependencyManagement>管理依赖,且修改<packaging>为pom,可用<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.zhaoxueer</groupId>
<artifactId>ABC-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>ABC-parent</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<junit.version>3.8.1</junit.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
</project>
child项目中,使用<parent>引用父项目的坐标,并可以删除掉父项目中存在的jar包的version和scope,实现继承。
<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>com.zhaoxueer</groupId>
<artifactId>A</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>A</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<parent>
<groupId>com.zhaoxueer</groupId>
<artifactId>ABC-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
</dependencies>
</project>
注:eclipse中,项目右键maven->update,可更新项目(例如配置文件修改后);
修改maven的jre版本:setting中加入如下配置
<profile>
<id>jdk-1.7</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
5.3 聚合继承若在同一个pom文件中,则需要在子模块中加入:<relativePath>../webHy/pom.xml</relativePath>,如在子模块webHy-login中配置如下:
8.创建maven的web工程
第一步:创建
第二步:创建的工程中缺少Servlet API,加入依赖,并且配置scope属性为provided
第三步:完善目录结构
最初目录结构如下:
最初目录结构如下:
可通过Project Explore视图中对应目录下加source folder,或者Navigator视图下对应目录下添加folder:
第四步:查看输出路径是否为class,并将工程转换为web项目
第五步:删除多余的部署目录,比如test在项目发布的时候是不需要的,故删除
第六步:配置tomcat-maven插件(apache官网有示例)
第七步:打包运行clean pacakge
<build>
<finalName>webDemo</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.2</version>
<!-- 打包时即运行tomcat -->
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
第七步:打包运行clean pacakge