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. c# 进行AE开发时,如何在地图上定位出一个点

    一.文本形式的气泡提示框 由于本人是初学,所以具体的含义尚未弄清楚,直接给出代码吧!

  2. redis发布/订阅模式

    其实在很多的MQ产品中都存在这样的一个模式,我们常听到的一个例子 就是邮件订阅的场景,什么意思呢,也就是说100个人订阅了你的博客,如果博主发表了文章,那么100个人就会同时收到通知邮件,除了这个 场 ...

  3. mysql show processlist命令 详解

    SHOW PROCESSLIST显示哪些线程正在运行.您也可以使用mysqladmin processlist语句得到此信息.如果您有SUPER权限,您可以看到所有线程.否则,您只能看到您自己的线程( ...

  4. Activity与Activity之间,Fragment与Fragment之间通过Bundle传值的研究

    一.Fragment与Activity的通讯   在使用fragment的时候,通常的用法都是使用一个activity来管理不同的fragment,所以每个fragment与activity的及时通讯 ...

  5. uC/OS - III 移植 IAR平台

    关于移植uC/OS-III 网上已经有很多教程了此处只是做个记录 首先下载源码然后解压得到下面的文件: 然后在模版工程里新建各种文件夹: 最后全部都添加进工程: OK了,编译一下,惊呆了,竟然 0错误 ...

  6. Java Spring boot 系列目录

    Spring boot 介绍 Spring boot 介绍 Spring boot 介绍 Spring boot 介绍 Spring boot 介绍 Spring boot 介绍 Spring boo ...

  7. bzoj 3143 [Hnoi2013]游走(贪心,高斯消元,期望方程)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3143 [题意] 给定一个无向图,从1走到n,走过一条边得到的分数为边的标号,问一个边的 ...

  8. [Hive - LanguageManual] Create/Drop/Grant/Revoke Roles and Privileges / Show Use

    Create/Drop/Grant/Revoke Roles and Privileges Hive Default Authorization - Legacy Mode has informati ...

  9. 用原生javascript模拟经典FC游戏公路争霸

    #用原生javascript模拟经典FC游戏公路争霸 前几天看了园子里面的随笔 [原生javascript开发仿微信打飞机小游戏](http://www.cnblogs.com/Mr-Nobody/p ...

  10. ubuntu下通过pip安装pyside

    首先安装相关库 sudo apt-get install build-essential git cmake libqt4-dev libphonon-dev python2.7-dev libxml ...