(一)Maven基础及第一个Maven工程
一、Maven介绍
ANT/Maven/gradle是一个项目管理工具,它包含了一项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Manangement System),和用来运行定义在生命周期阶段中插件目标的逻辑。
Maven是面向技术层面,针对Java开发项目管理工具,它提供了构建工具所提供功能的超集,除了构建功能之外,Maven还可以管理项目结构、管理依赖关系、生成报告、生成Web站点、有助于团队成员之间的交流与协作。
二、声明周期

三、安装及其第一个Maven工程
3.1:Maven的安装
A:解压压缩包到workspace某一目录中。
B:配置环境变量
M2_HOME:D:\WorkSpace_Eclipse\apache-maven-3.2.5(类似Java_Home)
path: 加入D:\WorkSpace_Eclipse\apache-maven-3.2.5\bin
C:cmd窗口:输出mvn -v:如果有提示信息,表示安装成功。
3.2:目录结构:
bin
conf目录:setting.xml:Maven的配置文件。
A:更改Maven的本地仓库的路径:
本地仓库:Maven用于存放从网络中下载的jar与插件的存放目录。修改 conf目录下的setting.xml
<localRepository>D:/WorkSpace_Eclipse/apache-maven-repository</localRepository>
3.3:Maven与IDE(MyEclipse)结合:
A:更改MyElipse的默认Maven。Preferences---->MyEclipse---->Maven4MyEclipse--->Installing
B:更改MyElipse的默认Maven。Preferences---->MyEclipse---->Maven4MyEclipse--->Global Setting File:更改为Maven目录的settting.xml的路径。
C:更改MyElipse的默认Maven。Preferences---->MyEclipse---->Maven4MyEclipse中的jdk路径。
3.4:可以MyEclipse创建一个简单的Maven工程。
约定大于配置。(目录结构)
Maven 提倡“约定优于配置”(Convention Over Configuration),
这是 Maven最核心的设计理念之一。
原因之一就是使用约定可以大量减少配置。
a) 源码目录为 src/main/java/ 【相当于java工程的src目录】
b) 源码资源目录为 src/main/resources/ :用到的资源文件(各种xml,properites,xsd文件等)都放在src/main/resources下面
c) 测试目录为 src/test/java/
d) 测试资源目录为 src/test/resources/
e) 编译输出目录为 target/classes/【bin/WEB-INF/classes】
f) 打包方式为 jar/war
g) 包输出目录为 target/
h) 超级pom
超级 pom 定义以上的目录结构、核心插件设定版本。Maven 设定核心插件的原因,
是防止由于插件版本的变化而造成构建的不稳定。
遵循约定虽然损失了一定的灵活性,用户不能随意安排目录结构,但是却能减少配置。
更重要的是,遵循约定能够帮用户遵循构建标准。个性往往意味着牺牲通用性,
意味着增加无谓的复杂度。
工程目录(main中的java/resource与test中的java/resource是源文件夹,不是文件夹。)
src
main
java: 放java的源文件
resources 放配置文件。
webapp
WEB-INF
web.xml
test
java 放测试javar的源文件
resources 放测试的的配置文件。
pom.xml 工程模型配置文件。
target
classes

四、坐标(GAV)
上面的例子pom.xml 如下
<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.shyroke</groupId>
<artifactId>maven01</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>maven01</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
version:版本定义,SNAPSHOT--->Alpha--->Beta--->Release----GA SNAPSHOT:内部开发版本 Alpha: 内部公测版本 Beta: 对外公开的测试版本 Release: 可以使用的版本 GA: 稳定版本
- <packaging>jar|war|pom</packaging> 运行maven的package命令时,该工程会打包为一个java
groupId, artifactId, packaging, version 叫作 maven 坐标,它能唯一的确定一个项目。有了 maven 坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。
五、坐标与依赖
Maven工程中的依赖:从本地仓库中寻找。如果本地仓库中寻找不到,再找网络仓库(中央仓库)中寻找。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
5.1 案例
- 将一个写好代码的maven01工程打包,在maven02工程中通过坐标引用这个工程的代码。

- pom.xml:
<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.shyroke</groupId>
<artifactId>maven01</artifactId>
<version>2.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>maven01</name>
<url>http://maven.apache.org</url> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>- 这个工程使用install命令 ,会在本地仓库中生成这个工程的文件,如果没有使用install命令则另一个工程无法引用这个工程。
- maven01工程的gav唯一标识了这个工程,也就是说在maven01工程中的pom.xml文件中引入这个工程的gav就可以使用maven01工程的类的方法。

- 如上图,在maven02工程中成功引用了maven01的类。
(一)Maven基础及第一个Maven工程的更多相关文章
- MAVEN学习-第一个Maven项目的构建
MAVEN安装成功之后就可以进行项目的构建和管理了: 为什么要用maven进行项目的构建和管理? 对于初学者来说一个最直接的也是最容易里的优点在于JAR包的管理,相对于以前开发一个项目的时候我们需要用 ...
- (一)maven之创建一个maven项目
为什么要使用Maven? 1. maven使用的是本地仓库存储jar,所有项目都会共用仓库中的同一份jar. 2. Spring core.jar必须同时引用版本兼容的common-logging ...
- 使用Maven快速创建一个SpringMVC工程步骤
第一步:创建maven工程,加入SpringMVC的maven依赖: <dependency> <groupId>org.springframework</groupId ...
- Maven基础学习(一)—Maven入门
一.概述 Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管 ...
- Maven基础配置—本地Maven配置
1.下载客户端 通过http://maven.apache.org/download.cgi#下载Maven本地客户端. 我下载的是apache-maven-3.2.5-bin.zip,在D盘解压. ...
- maven(一)创建一个maven的web项目
一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...
- (一)SpringMvc简介以及第一个springmvc工程
一.SpringMVC是什么? springmvc是Spring的一个模块,提供web层解决方案(就与MVC设计架构) 如上图, DispatcherServlet:前端控制器,由SpringMVC提 ...
- maven课程 项目管理利器-maven 2-2第一个maven案例hellomaven
maven 目录结构 pom.xml src -main -java -package -test -java -package -resources
- maven(二)创建一个maven的web项目中解决Cannot change version of project facet Dynamic web module to 2.5
我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp,由于这个catalog比较老,用的servlet还是2.3的,而一 ...
随机推荐
- ArcGIS10.3_解决属性表中文乱码问题
借鉴前辈们解决ArcMap低版本属性表乱码的问题解决方法,勇敢的尝试了一下Pro中的解决方法,其实道理都一样.先来看看第一种方法:打开CMD,如果是ArcMap,输入如下命令: reg add HKE ...
- windows7 10 windows2008 windws2012 nfs客户端的安装
servermanagercmd.exe -install FS-NFS-Services for windows2008 windows2012 在添加功能角色-添加文件打印服务选择nfs客户端 ...
- Mybatis 中的转义字符(转帖)
下文来自:https://www.cnblogs.com/dato/p/7028723.html 在此感谢作者的辛勤付出. 记录以下mybatis中的转义字符,方便以后自己看一下 Mybatis转义 ...
- 将bat文件注册成为系统服务
第一章 注册系统服务准备 1.1 注册系统服务前准备 1.1.1 涉及第三方软件 Bat_To_Exe_Converter.exe (将*.bat文件转化为可执行*.exe文件) insts ...
- golang 循环创建闭包 问题排查
][]string{ { { "邀请码是什么", "我没有邀请码", "这个邀请码我可以随便填吗", "邀请码可以填他的手机号吗& ...
- python面试必备-基础篇
一.python中and, or, and-or语法 1.and 有假先出假 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值:而是,返回它们实际进 ...
- iOS笔试题04
1. Object-C有多继承吗?没有的话用什么代替? 1> OC是单继承,没有多继承 2> 有时可以用分类category和协议protocol来代替多继承 2. Object-C有私 ...
- 01.轮播图之二 :tableView 轮播
在做这个tablevew轮播的时候,重要的就是修改frame 和view 的翻转了:::: 也是不难的,概要的设计和scroll 轮播是一致的: 首先是 .h 的文件 @interface Table ...
- FlappyBird
学习CocosCreator有段时间了,现在花了两天时间写了个像素鸟的小游戏,这个游戏之前又看到过,但是不知道怎么又下架了,之前还是蛮火的游戏,想起来后去网上看了看,原来是因为侵犯了 超级玛丽 的游戏 ...
- OneNote2016代码高亮插件的安装与使用
OneNote2016代码高亮插件的安装与使用 使用效果 我觉得CSDN和博客园上面的许多讲解都不是很清晰,最后还是我自己弄好的.这里分享一下: 第一步要确认自己OneNote的版本是32位的还是64 ...