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 学习笔记(三)的更多相关文章

  1. Maven学习笔记(三) :Maven使用入门

    编写POM:      Maven项目的核心是pom.xml.POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描写叙述项目怎样构建,声明项目依赖,等等.   ...

  2. maven学习笔记三(依赖特性,作用域)

    上一章中  我们看到了添加了个junit的依赖包.那么maven中想添加依赖的jar包我们只需要配置相应的dependency就行.例如: <dependency> <groupId ...

  3. Maven学习笔记-03-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  4. Maven学习笔记-04-Eclipse下maven项目在Tomcat7和Jetty6中部署调试

    现在最新的Eclipse Luna Release 已经内置了Maven插件,这让我们的工作简洁了不少,只要把项目直接导入就可以,不用考虑插件什么的问题,但是导入之后的项目既可以部署在Tomcat也可 ...

  5. MAVEN学习笔记之Maven生命周期和插件简介(3)

    MAVEN学习笔记之Maven生命周期和插件简介(3) clean compile site三套生命周期相互独立. clean pre-clean 执行清理前的工作 clean 清理上一次构建生成的所 ...

  6. MAVEN学习笔记之私服Nexus(2)

    MAVEN学习笔记之私服Nexus(2) 私有服务器搭建 Nexus www.snatype.org下载 snatype-work 是默认nexus存储nexus a:将bin添加到环境中 Admin ...

  7. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  8. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  9. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

随机推荐

  1. dlib安装教程(for linux)

    https://blog.csdn.net/LoHiauFung/article/details/78454905 https://www.linuxidc.com/Linux/2017-11/148 ...

  2. MySQL性能调优与架构设计——第 18 章 高可用设计之 MySQL 监控

    第 18 章 高可用设计之 MySQL 监控 前言: 一个经过高可用可扩展设计的 MySQL 数据库集群,如果没有一个足够精细足够强大的监控系统,同样可能会让之前在高可用设计方面所做的努力功亏一篑.一 ...

  3. (网络流 匹配 KM) Going Home --poj -- 2195

    链接: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82835#problem/D 有n个人有n栋房子,每栋房子里能进一个人,但每走一格 ...

  4. (快速幂)Key Set--hdu--5363

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5363 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  5. C++中的乱七八糟问题

    1   在编写的c++程序中,如果是窗口,有时会一闪就消失了,如果不想让其消失,在程序结尾处添加: #include“iostream.h” system("pause"); 分析 ...

  6. codevs 1083

    这道题是看了人家大牛的解题报告: 对了,要说明一下,(A+B)&1 ,表示,判断(A+B)是奇数否? 下面给出代码: #include<iostream> #include< ...

  7. Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项

    http://blog.csdn.net/delphiteacher/article/details/8924110 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox ...

  8. CodeFirst迁移注意点

    Context构造函数不检查__MigrationHistory 取消当数据库模型发生改变时删除当前数据库重建新数据库的设置.Database.SetInitializer<Context> ...

  9. .net core Swagger

    Startup中的  ConfigureServices //注册 Swagger services.AddSwaggerGen(sg => { sg.SwaggerDoc("refu ...

  10. js url 参数 转换成 json 对象数据

    some=params&over=here => {"some":"params","over":"here&quo ...