1. 掌握M2Elipse插件安装及Maven仓库的配置
2. 掌握Maven工程目录结构和创建工程
3. 掌握Maven工程的关系
4. 掌握Maven常见的插件
5. 掌握Maven命令
壹、什么是 Maven
在Maven中,可以理解为所有的项目都是一个个的对象。
贰、Maven 和 ANT 的区别
叁、 Maven 的下载与 IDE 的整合
window->Preferences->Maven->Installations,将下载好的的Maven工具添加。
添加后将其勾选,确定。
指定Maven的配置文件。也可以将原setting.xml文件复制一份放入到其他文件夹中进行指定,并自定义配置本地仓库
二、Maven 仓库与配置
Maven 仓库是基于简单文件系统存储的,集中化管理 Java API 资源(构件)的一个服
务。仓库中的任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存
储路径。得益于 Maven 的坐标机制,任何 Maven 项目使用任何一个构件的方式都是完全
相同的,Maven 可以在某个位置统一存储所有的 Maven 项目共享的构件,这个统一的位
置就是仓库,项目构建完毕后生成的构件也可以安装或者部署到仓库中,供其它项目使用。
1、远程仓库:
远程仓库指通过各种协议如 file://和 http://访问的其它类型的仓库。这些仓库可能是第
三方搭建的真实的远程仓库,用来提供他们的构件下载(例如 repo.maven.apache.org 和
uk.maven.org 是 Maven 的中央仓库)。其它“远程”仓库可能是你的公司拥有的建立在文件
或 HTTP 服务器上的内部仓库,用来在开发团队间共享私有构件和管理发布的。
2、本地仓库:
本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件。
3、本地仓库配置
本地仓库是开发者本地电脑中的一个目录,用于缓存从远程仓库下载的构件。
在settings文件中进行配置
<localRepository>D:/java-libs
4、镜像仓库配置
如果仓库 A 可以提供仓库 B 存储的所有内容,那么就可以认为 A 是 B 的一个镜像。例 如:在国内直接连接中央仓库下载依赖,由于一些特殊原因下载速度非常慢。这时,我们可 以使用阿里云提供的镜像 http://maven.aliyun.com/nexus/content/groups/public/来替换中央仓 库 http://repol.maven.org/maven2/。
在settings文件中进行配置
<mirror>
仓库优先级
本地仓库,镜像仓库,中央仓库。
镜像仓库=中央仓库。 镜像仓库是用于替代中央仓库的。
仓库访问优先级:
本地仓库 第一访问本地仓库。
指定仓库 如果本地仓库不存在对应信息,访问配置文件中指定的远程仓库。 这个远程仓库是第二优先级。 远程仓库 镜像仓库 镜像仓库是 Maven 开发过程中的首选远程仓库,在本地仓库和指定仓库无法获取资源
的时候,直接访问镜像仓库。 中央仓库 如果镜像仓库不是中央仓库 ,则会在访问镜像仓库无法获取资源后,访问中央仓库。
访问流程
Maven在根据坐标查找jar包的时候,首先访问的是本地仓库,如果在本地仓库中没有包含坐标jar包,
那么访问指定仓库。
在本地仓库和指定仓库无法获取资源的时候,访问镜像仓库,如果镜像仓库不是中央仓库,
那么在访问镜像仓库无法获取资源后,访问中央仓库。
伍、Maven工程
1、Maven 的工程类型 1.1、POM 工程 POM 工程是逻辑工程。用在父级工程或聚合工程中。用来做 jar 包的版本控制。 1.2、 JAR 工程 将会打包成 jar 用作 jar 包使用。即常见的本地工程 - Java Project。 1.3 、WAR 工程 将会打包成 war,发布在服务器上的工程。如网站或服务。
即常见的网络工程 - Dynamic Web Project。war 工程默认没有 WEB-INF 目录及 web.xml 配置文件,IDE 通常会显示工程错误,
提供完整工程结构可以解决。
一、maven工程的创建
New--> other -->Maven Project
填写项目信息
1 Group Id 公司域名倒写
2 Artifact Id 项目名
3 Version 版本名
4 Packaging 项目类型4.1 Jar java 项目4.2 War : web 项目4.3 POM: 父项目.如果项目有子项目,项目必须是 pom
5 Name : 自定义名称,内容任意
6 Description: 描述.详细描述.
7 Parent Project: 如果当前项目有父项目时填写
二、Maven工程结构
src/main/java 这个目录下储存 java 源代码 src/main/resources 储存主要的资源文件。比如spring的xml配置文件和log4j的properties 文件。 src/test/java 储存测试用的类,比如 JUNIT 的测试一般就放在这个目录下面 src/test/resources 储存测试用的资源文件 src 包含了项目所有的源代码和资源文件,以及其他项目相关的文件。 target 编译后内容放置的文件夹 pom.xml 是 Maven 的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等等
配置Pom.xml文件
三、Maven工程关系
1、依赖关系,创建jar类型工程
<dependencies>
A项目打包
选中项目,Run As--->Maven install,当控制台出现BUILD SUCCESS时就代表打包成功。可以从target中看到。
在B项目中引入A项目。
2、继承
概念:
如果 A 工程继承 B 工程,则代表 A 工程默认依赖 B 工程依赖的所有资源,且可以应用 B 工程中定义的所有资源信息。
被继承的工程(B 工程)只能是 POM 工程。
父工程:对项目资源做统一管理。
子工程:继承父工程,从父工程中的坐标中选择使用哪些来开发项目。pom类型工程结构与jar工程结构不同
File - New -Maven Project,选择创建pom类型的工程,之后修改pom.xml文件。
pom.xml配置
<project
统一版本管理
在pom工程pom.xml中配置
<junit-version>4.2
在jar工程中配置
<parent>
3、聚合
当我们开发的工程拥有 2 个以上模块的时候,每个模块都是一个独立的功能集合。比如 某大学系统中拥有搜索平台,学习平台,考试平台等。开发的时候每个平台都可以独立编译, 测试,运行。这个时候我们就需要一个聚合工程。 在创建聚合工程的过程中,总的工程必须是一个 POM 工程(Maven Project),各子模 块可以是任意类型模块(Maven Module)。所有聚合工程和聚合模块必须处于同一个组 (groupId)中,且聚合工程可以嵌套。
Maven 中的常见插件配置
1.编译器插件
pom.xml文件配置(局部对当前项目有效)
<build>
settings.xml 文件中配置全局编译器插件
<profile>
2.Tomcat 管理插件
本地应用
运行命令(tomcat7:run)
<build>
远程热部署
运行命令(第一次 tomcat7:depoly 第二次 tomcat7:redepoly )
远程热部署是指,在 Tomcat 容器运行过程中,动态实现 war 工程的部署,重新部署功能。
方式三:在linux系统中tomcat目录下conf目录下tomcat-users.xml文件中配置
<role
在pom.xml中配置
<build>
方式四:只用文件上传工具把war包直接上传到linux中tomcat目录下wapps下root中
Maven 常用命令
install 本地安装, 包含编译,打包,安装到本地仓库 编译 - javac 打包 - jar, 将 java 代码打包
为 jar 文件 安装到本地仓库 - 将打包的 jar 文件,保存到本地仓库目录中。
clean 清除已编译信息。 删除工程中的 target 目录。
compile 只编译。 javac 命令
deploy 部署。 常见于结合私服使用的命令。 相当于是 install+上传 jar 到私服。 包含编译,打包,
安装到本地仓库,上传到私服仓库。
package 打包。 包含编译,打包两个功能。