1. 简介
Maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理。
最大的特色:jar包管理
每一步执行,都会将这一步的前面都执行,比如执行打包package,那么前面的清理,编译,测试,报告都会执行
2.准备工作
2.1了解资源文件夹含义
src/main/java 存放项目的java文件
src/main/resources 存放项目的资源文件,如spring,hibernate的配置文件
src/test/java 存放所有的测试的java文件
src/test/resources 存放测试用的资源文件
target 项目输出位置
pom.xml 文件,简单理解,管理jar包的
2.2 仓库分类及调用顺序
中央仓库地址:
2.3 原理简介
插件在哪里,请看:..${mavenhome}\repository\org\apache\maven\plugins下的
于是就有了常用maven指令:
•mvn compile :编译源代码
•mvntest-compile :编译测试代码
•mvn test : 运行应用程序中的单元测试
•mvn site : 生成项目相关信息的网站
•mvn clean :清除目标目录中的生成结果
•mvn package : 依据项目生成 jar 文件
•mvn install :在本地 Repository 中安装 jar
•mvn deploy:将jar包发布到远程仓库
•mvneclipse:eclipse :生成 Eclipse 项目文件
2.4 Maven的特点(依赖,继承)
个人理解如下:
依赖相当于调用其他类(jar格式),需要将引用的项目打成jar格式
再使用dependency标签,就可以引用其他项目的的类了
而继承相当于引用了其他类的jar包(包括类本身),将继承的项目的打成pom格式,然后其他项目要继承时,使用parent标签即可,比如
附加冲突解决:
如果a.jar包依赖b.jar这个项目的1.0版本,可是我的项目中已经有b.jar这个项目2.0的版本了,这里就会造成冲突,解决的办法是去除a.jar包依赖b.jar这个项目的1.0版本的依赖关系,让项目使用我已有的包。使用exclusion标签就可以了
2.5 pom文件简单说明
<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">
<!--pom 版本-->
<modelVersion>4.0.0</modelVersion>
<!--组id
maven 用坐标概念来标识 jar包
坐标=groupId+artifactId+version
-->
<groupId>com.maven.demo</groupId>
<!--构建物id :产品id-->
<artifactId>HelloFriend</artifactId>
<!--版本 :SNAPSHOT :测试版本 ,镜像版本 release :发行版本,最终版本-->
<version>0.0.1-SNAPSHOT</version>
<!--发布的是jar包 ,默认是jar包,也可以使war包等-->
<packaging>jar</packaging>
<!--项目名称 ,可写可不写-->
<name>MavenDemo1</name>
<dependencies>
<!--jar包声明式依赖 依赖 junit4.9jar包-->
<!-- <dependency>
用坐标来标识jar包: 坐标=groupId+artifactId+version
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.9</version>
依赖的jar包的使用范围 : 当测试时使用该jar包
test 、 compile(默认)
<scope>test</scope>
</dependency> -->
<!--jar包声明式依赖 依赖 Hello.jar包
在依赖时,需要把那个依赖项目install放进Maven类库
继承时需要发布为pom格式
<packaging>pom</packaging>
再 install到类库中
* compile,缺省值,适用于所有阶段,会随着项目一起发布。
* provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
* runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
* test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
* system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。
-->
<dependency>
<!--用坐标来标识jar包: 坐标=groupId+artifactId+version -->
<groupId>com.maven.demo</groupId>
<artifactId>Hello</artifactId>
<version>0.0.1-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
资源路径
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>src</directory>
<excludes>
忽略java文件,应该的
<exclude>**/*.java</exclude>
</excludes>
</resource>
</resources>
</project>
</build>
附加属性说明:
3.Myeclipse2014创建Maven工程
基本步骤:
2.1从http://maven.apache.org/官网上下载最新版本的maven,配置环境变量
2.2 dos窗口下测试:mvn -c
2.3配置本地仓库
当没有配置本地仓库是,默认路径:
Default: ${user.home}/.m2/repository,修改setting文件
4.方式1 直接新建Maven project项目
准备工作:
选择Maven project
如果出现列表,选择Internal,等会就出来了
选择quickstart或者webapp都行,都是基于插件构建
最后完成即可,你会发现,这种方式生成的资源目录不完整,需手动完善,于是有了第二种方式
5.方式2:建立web Project 添加Maven
5.1 建立Maven规范的web项目
完成后出现的结构如下:完整的,如果你有红色的感叹号,估计jar冲突,在pom中删除之或者屏蔽
你会发现,webRoot哪去了,看src
5.2 建立符合web project习惯的Maven项目
完成效果如下:是不是很熟悉的结构
6.部署
先了解下如何测试:
你会发现没有compile指令,在build里面建立compile即可
6.1 方式1
直接部署就可以了
或者:
6.2方式2 war包部署
你可以Run as –Maven install—>打包成war包,然后把war包放进tomcat的webapps里面就可以了
或者:
这个方式个人觉得等价于tomcat的生产模式;只不过war包生成的路径不同而已
好,基本就介绍到这了