Maven 学习笔记(三)
Maven生命周期
在上次我们使用maven package 对项目进行打包。这里就是为其指定一个生命周期。生命周期是包含在一个项目构建中的一系列有序的阶段。Maven有许多不同的生命周期,比如验证(validation),测试(testing),或者发布(deployment),不同的生命周期在项目中意味着不同的事情。比如在上面我们使用了 maven package 如果你仔细观察的话会发现在这之前还做了其他的事情,比如编译(compile),测试(test)。所以在maven完成 package 的时候会执行它之前所有的阶段,直到指定的阶段执行完毕。
Maven坐标
之前我们使用插件Archetype创建了一个maven项目,注意观察生成项目的pom文件这个里面包含了对这个项目的声明信息。当maven运行一个目标的时候,每个目标都会访问定义在项目POM里的信息。当运行不同的目标的时候会根据在pom中的定义来完成。在pom文件中我们会为项目定义一个唯一的标识名,也就是说提供了项目的一组唯一坐标,并且通过依赖 (dependencies) ,父 (parents) 和先决条件(prerequisite) 来定义和其它项目的关系,同时我们和可以为项目定义一系列的插件。
<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.maven.demo01</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:
一般为这个项目所在的公司的逆向域名(reverse domain name)开头。
artifactId:
在 groupId 下的表示一个单独项目的唯一标识符。
version:
一个项目的特定版本。发布的项目有一个固定的版本标识来指向该项目的某一个特定的版本。而正在开发中的项目可以用一个特殊的标识,这种标识给版本加上一个“SNAPSHOT”的标记。
packaging:
项目的类型,默认是 jar ,描述了项目打包后的输出。类型为 jar 的项目产生一个JAR文件,类型为 war 的项目产生一个web应用。
注意的是:一个项目的 groupId:artifactId:version 构成一个独一无二的项目,所以你不能同时有一个拥有同样的 groupId , artifactId 和 version 标识的项目。
Maven仓库(Repositories)
当我们运行mavne的时候,你会注意到Maven从一个远程的Maven仓库下载了许多文文件。在一个maven项目中插件和项目的依赖都从远程仓库中下载出来的,当然如果你的网络不是很好的话,可以修改mavne的配置文件使其从国内的远程仓库中下载。
Maven依赖管理 (Dependency Management)
在第二节的例子中我们创建了一个简单的mavne项目,使用了unit:junit:3.8.1,如果你仔细注意的话会发现你的pom文件中有专门处理dependencies,那里面包含了一个单独的依赖JUnit。当然对于一个复杂的项目来说它的依赖可远远不止这些的。maven有一个强大的地方就是支持依赖的传递,这个我们以后会提到。
到这里我们可以自己手动的创建个maven的项目,并且了解一下上面提到的知识点!!!
Maven 学习笔记(三)的更多相关文章
- Maven学习笔记(三) :Maven使用入门
编写POM: Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描写叙述项目怎样构建,声明项目依赖,等等. ...
- maven学习笔记三(依赖特性,作用域)
上一章中 我们看到了添加了个junit的依赖包.那么maven中想添加依赖的jar包我们只需要配置相应的dependency就行.例如: <dependency> <groupId ...
- Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试
现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...
- MAVEN学习笔记之Maven生命周期和插件简介(3)
MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...
- MAVEN学习笔记之私服Nexus(2)
MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Admin ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- [Firefly引擎][学习笔记三][已完结]所需模块封装
原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读: 笔记三主要就是各个模块的封装了,这里贴 ...
- JSP学习笔记(三):简单的Tomcat Web服务器
注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...
随机推荐
- 在 Java 中使用 protobuf
在 Java 中使用 protobuf 从 https://github.com/google/protobuf/releases 下载编译器,并设置环境变量. 创建java项目添加protobuf- ...
- (博弈)Simple Game --codeforces--570B
链接: http://codeforces.com/problemset/problem/570/B http://acm.hust.edu.cn/vjudge/contest/view.action ...
- 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试
Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...
- Breaseman算法绘制圆形|中点算法绘制圆形_程序片段
Breaseman算法绘制圆形|中点算法绘制圆形_程序片段 1. Breaseman算法绘制圆形程序 由于算法的特殊性,限制绘制第一象限部分,其他部分通过旋转绘制. void CCGProjectWo ...
- hdu 5024 最长的L型
http://acm.hdu.edu.cn/showproblem.php?pid=5024 找到一个最长的L型,L可以是斜着的 简单的模拟 #include <cstdio> #incl ...
- Spring 注入集合类型
定义了一个类: @Service public class StringTest implements CachedRowSet,SortedSet<String>,Cloneable @ ...
- SpringMVC绑定到实体数组、list、set、和map时要注意
实体的属性前一定要用.分割,如果是使用jquery的ajax提交的一个js数组对象,则请求数据会被格式化为 var sub = [{name:1,num:2},{name:1,num:2}] $.po ...
- Html隐藏占空间与隐藏不占空间
隐藏不占用空间: display:none; 以下为示例代码: <span style="display:none;"> 获取中</span> 隐藏占用空间 ...
- Python学习-39.Python中的生成器
先回顾列表解释 lista = range(10) listb = [elem * elem for elem in lista] 那么listb就将会是0至9的二次方. 现在有这么一个需求,需要存储 ...
- 使用回调方式写POI导入excel工具类
场景是这样的:为了做一个excel导入的功能,为了尽可能的写一个通用的工具类,将与poi有关的东西都封装起来,以便以其他人员只用关心自己的业务,不用和poi打交道. 写到最后,现在还是会有poi的东西 ...