1 maven概念模型

2 maven的生命周期,项目构建过程

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

Maven生命周期就是为了对全部的构建过程进行抽象和统一

包含项目清理,初始化,编译,打包,測试,部署等差点儿全部构建步骤

Maven有“三套”相互独立的生命周期,并且相互独立,这三套生命周期各自是:

Maven三大生命周期

clean:清理项目的

在进行真正的构建之前进行一些清理工作。

default:构建项目的

构建的核心部分。编译。測试,打包,部署等等。

site:生成项目网站的

生成项目报告,网站。公布网站

要特别注意的是:它们是相互独立的。能够只调用clean来清理工作文件夹,只调用site来生成网站。当然也能够直接执行mvn
clean install site 执行着三套生命周期。

clean生命周期每套生命周期都由一组阶段(Phase组成),我们平时在命令行输入的命令总会相应于一个特定的阶段。

比方mvn
clean,这个clean是Clean生命周期的一个阶段。

clean生命周期

pre-clean

运行一些须要在clean之前完毕的工作

clean

移除全部上一次构建生成的文件

post-clean

运行一些须要在clean之后立马完毕的工作

注意:

mvn clean
中的clean就是上面的clean,在一个生命周期中,执行某个阶段的时候。它之前的全部阶段都会被执行。也就是说。mvn
clean等同于mvn pre-clean clean,那么pre-clean就会被执行。

这是Maven非常重要的一个规则,能够大大简化命令行的输入。

site生命周期

pre-site

运行须要生成网站文档之前完毕的工作

site

生成项目的网站文档

post-site

运行一些须要生成网站文档之后完毕的工作,而且为部署做准备

site-deploy

将生成的网站文档部署到特定的server上

注意:

这里经经常使用到的是site阶段和site-deploy阶段,用以生成和公布Maven网站。这但是Maven相当强大的功能,Manager比較喜欢,文档及统计数据自己主动生成。

Default生命周期是Maven生命周期中最重要的一个。绝大部分工作都发生在这个生命周期中。这里。仅仅解释一些比較重要和经常使用的阶段:

Default生命周期

validate

generate-sources

process-sources

generate-resources

process-resources

复制并处理资源文件,至目标文件夹,准备打包

compile

编译项目的源码。

process-classes

generate-test-sources

process-test-sources

generate-test-resources

process-test-resources

复制并处理资源文件。至目标測试文件夹

test-compile

编译測试源码

process-test-classes

test

使用合适的单元測试框架执行測试。这些測试代码不会被打包或部署

prepare-package

package

接受编译好的代码。打包成可公布的格式。如JAR

pre-integration-test

integration-test

post-integration-test

verify

install

将包安装至本地仓库,以让其他项目依赖

deploy

将终于的包赋值到远程的仓库,以让它开人员与项目共享。

注意:

执行不论什么一个阶段的时候。它前面的全部阶段都会被执行,这也就是为什么我们执行mvn install
的时候,代码会被编译。測试。打包。

此外,Maven的插件机制是全然依赖Maven的生命周期的,因此理解生命周期至关重要。

3 Maven坐标

Maven坐标主要组成

groupId :定义当前Maven项目隶属项目(习惯用包名来做)

样例:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

artifactid:定义实际项目中的一个模板(通常是主类名)

version:定义当前项目的当前版本号

packaging:定义该项目的打包方式(jar,war等方式)

4
依赖管理(依赖范围,依赖声明)

依赖范围(scope)

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

依赖声明

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.10</version>

<scope>test</scope>

</dependency>

</dependencies>

当中依赖范围scope
用来控制依赖和编译。測试,执行的classpath的关系.基本的是三种依赖关系例如以下:

1.      
compile:默认编译依赖范围。对于编译,測试,执行三种classpath都有效

2.      
test:測试依赖范围。仅仅对于測试classpath有效

3.      
provided:已提供依赖范围。对于编译。測试的classpath都有效。但对于执行无效。因此由容器已经提供,比如servlet_api

4.      
runtime:执行时提供。比如:jdbc驱动

传递性依赖:

见传递依赖图

传递性依赖影响范围

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

传递性依赖原则:

A-->B

A-->C

1.路径近期者优先

2.路径同样。第一声明者优先

注意:

1.dependencyManagement中定义的依赖子module不会共享

2.dependencies中定义的依赖子module能够共享

可选依赖不被传递

依赖优化:mvn dependency:list

5
仓库管理。私服概念

何为Maven仓库

A
用来统一存储全部Maven共享构建的位置就是仓库

Maven仓库布局

依据Maven坐标定义每一个构建在仓库中唯一存储路径

大致为:groupId/artifactId/version/artifactId-version.packaging

仓库的分类:

本地仓库:

~/.m2/repository/

每一个用户仅仅有一个本地仓库

远程仓库

中央仓库:Maven默认的远程仓库

http://repo1.maven.org/maven2

私服:是一种特殊的远程仓库。它是架设在局域网内的仓库

镜像:用来替代中央仓库,速度一般比中央仓库块。

4.Maven概念模型,maven的生命周期,Maven坐标,依赖管理(依赖范围,依赖声明),仓库管理,私服概念的更多相关文章

  1. Maven 的插件和生命周期的绑定

    一.Maven 的生命周期 Maven 的生命周期是对所有的构建过程进行抽象和统一.Maven 的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶 ...

  2. maven详解之生命周期与插件

    Maven是一个优秀的项目管理工具,它能够帮你管理编译.报告.文档等. Maven的生命周期: maven的生命周期是抽象的,它本身并不做任何的工作.实际的工作都交由"插件"来完成 ...

  3. maven的仓库、生命周期与插件

    一.仓库 统一存储所有Maven项目共享的构建的位置就是仓库. 仓库分为本地仓库和远程仓库.远程仓库又分为中央仓库(中央仓库是Maven核心自带的远程仓库),伺服(另一种特殊的远程仓库,为节省宽带和时 ...

  4. Spring Bean 的生命周期,如何被管理的?

    定义 Bean是一个被实例化,组装,并通过Spring IOC容器(BeanFactory和ApplicationContext容器)所管理的对象. 作用域 Spring支持五个作用域,分别是sing ...

  5. maven第7章生命周期和插件

    maven插件用到哪些思想? 7.7 从命令行调用插件 目标前缀和插件前缀是一个意思. 在本地搭建maven环境,熟悉maven的环境.

  6. maven build的常用生命周期

    常用的maven build goals: validate - validate the project is correct and all necessary information is av ...

  7. Maven入门 项目的生命周期&pom.xml配置&仓库

  8. sping Bean 的生命周期是如何被管理

    1. 实例化一个Bean,也就是我们通常说的new 2. 按照Spring上下文对实例化的Bean进行配置,也就是IOC注入 3. 如果这个Bean实现了BeanNameAware接口,会调用它实现的 ...

  9. Spring Bean 的生命周期,如何被管理的

    1. 实例化一个Bean,也就是我们通常说的new 2. 按照Spring上下文对实例化的Bean进行配置,也就是IOC注入 3. 如果这个Bean实现了BeanNameAware接口,会调用它实现的 ...

  10. (十二)Maven生命周期和插件

    除了坐标.依赖以及仓库之外,Maven的另外两个核心概念是生命周期和插件.在有关Maven的日常使用中,命令行的输入往往就对应了生命周期,如mvn package就表示执行默认生命周期阶段packag ...

随机推荐

  1. golang语言部分保留字的举例

    golang和c的代码有很大不同的,一不小心就会误用. 1 /* go保留字: */ /* break default func interface select case defer go map ...

  2. [Irving]WPF Invalid character in the given encoding. Line xx, position xx.' XML is not valid.

    WPF开发中发现Xaml界面中突然抽风似的提示错误 Invalid character in the given encoding. Line xx, position xx.' XML is not ...

  3. C语言反转字符串

    也是面腾讯的一道编程题=,= 这题比较简单 代码如下: #include <stdio.h> #include <string.h> // 非递归实现字符串反转 char *r ...

  4. 利用原生JavaScript获取样式的方式小结

    来源:http://www.ido321.com/930.html ps:是获取样式,不是设置样式.若没有给元素设置样式值,则返回浏览器给予的默认值.(论坛整理) 1.element.style:只能 ...

  5. Core Java 学习笔记——2.基本数据类型&类型转换

    数据类型(8种基本类型:int/short/long/byte/float/double/char/boolean) 整型 int 4字节 -2 147 483 648~2 147 483 647 s ...

  6. Tkinter教程之Menu篇

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1811321 '''Tkinter教程之Menu篇''''''1.创建一个简单的Menu'''# ...

  7. 一个考察for循环题 讨论一下

    一道Java程序题,主要是考察for循环如下所示: public class Test { static boolean fun(char c) { System.out.print(c); retu ...

  8. HDU-4750 Count The Pairs 最小生成树,并查集

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意:Q个询问t,求在一个无向图上有多少对点(i,j)满足 i 到 j 的所有路径上的最长边的最 ...

  9. 了解RFC协议号

    RFC是Request For Comment的缩写,意即“请求注解”,是由IETF管理,所有关于Internet的正式标准都以文档出版,但不是所有的RFC都是正式的标准,很多RFC的目的只是为了提供 ...

  10. 自动帮助创建android资源xml文件的网站

    自动帮助创建android资源xml文件的网站 http://android-holo-colors.com/ stack overflow上一个seekbar的例子: http://stackove ...