插件配置



定义解释:插件目标

当我们了解了maven插件之后。我们发现假设为每个功能编写一个独立的插件显然是不可取的,由于这些任务背后有非常多能够复用的代码。因此,把这些功能聚集在一个插件里,每个功能我们就称之为一个插件目标。

举个样例:

maven-dependency-plugin有十多个目标,每一个目标相应了一个功能

分析项目依赖:dependency:analyze

列出项目依赖树:dependency: tree

列出项目全部已解析的依赖:dependency:list



POM中插件全局配置

有些參数的值从项目的创建到项目公布都不会改变,或者说非常少改变,对于这样的情况,就能够在pom.xml中进行全局配置。

例:配置一个通用的Java编译版本号

        <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>

这样,无论绑定到compile阶段的maven-compiler-plugin: compile 还是绑定到test-compiler 阶段的maven-compiler-plugin: testCompiler 任务。就都可以使用该配置,基于Java1.6版本号进行编译。

POM中插件任务配置

获取插件信息



在线插件信息

Maven插件的来源:基本全部基本的maven插件都来自于Apache和CodeHaus

由于maven本身是属于Apache的。全部它有非常多官方的插件,并且他们具有非常好的稳定性

除了Apache之外,托管于Codehaus上的Mojo项目也提供了大量的maven插件。

(注:这些插件的文档和可靠性相对较差,使用的时候出现故障。仅仅能自己查看源代码)

插件解析机制和常见问题

与依赖构件一样,插件构件相同基于坐标存储在Maven仓库中。在须要的时候,Maven会从本地仓库寻找插件。假设不存在。则从远程插件仓库查找。找到插件之后,再下载到本地仓库使用

注:依赖的远程仓库    !=  插件的远程仓库,Maven会差别对待他们。

Maven须要的依赖在本地仓库中不存在时。Maven去配置的远程仓库中查找

Maven须要的插件在本地仓库中不存在时。Maven不会去这些远程仓库查找。

怎样配置插件的远程仓库

Maven的插件远程仓库使用<pluginRepositories>和><pluginRepository>进行配置

Maven内置的插件远程仓库配置例如以下:它关闭了对SNAPSHOT的支持,防止不稳定的构建

<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Maven Plugin Repository</name>
<url>http://repo1.maven.org/maven2</url>
<layout>default</layout>
<snapshots>
<enabled>false</enabled>
</snapshots>
<releases>
<updatePolicy>never</updatePolicy>
</releases>
</pluginRepository>
</pluginRepositories>

简单配置:

1.2省略groupId配置:

Maven针对其官方的插件提供了一种简单的配置策略,其官方的groupId为:org.apache.maven.plugins,在配置的时候能够省略该配置,Maven在解析该插件的时候,会自己主动用默认的groupId补齐。可是普通情况下不推荐此种使用方法,由于仅仅剩下了一行配置。并且easy对新手造成费解。

2.省略版本号配置:

maven的POM是採用了继承的机制(在maven的聚合与继承中有具体介绍)。Maven中有一个超级POM,全部的项目都继承了这个超级POM的配置,因此用户不加不论什么配置。Maven使用核心插件的时候,他们的版本号就已经确定了。

maven-clean-plugin

maven-compiler-plugin

maven-surefire-plugin

假设我们在配置的时候没有配置插件的版本号,Maven会遍历本地仓库和全部远程插件仓库,将该路径下的仓库元数据归并后,就能计算出latest和release版本号。

在Maven2中::::假设不配置版本号。那么会默认的被解析到latest版本号。这个版本号可能会出现潜在的问题,比方说。这个版本号是快照版本号

在Maven3中::::假设不配置版本号,那么会默认的被解析到release版本号,这样就攻克了稳定性问题,可是这也可能存在潜在问题,比方说,新版本号的行为与旧版本号的行为发生了变化,这样也会出现构建失败

所以:使用插件的时候,应该显示的设定版本号。





佛之孝:众生皆父母。百善孝为先。

明确心佛众生三无区别,同体名大悲的道理。才知道。关爱他人就是关爱自己,救度他人就是救度自己,对人好,这是对自己好,然后,,众生他们的父母来救度,这是佛的孝心。

版权声明:本文博主原创文章,博客,未经同意不得转载。

maven插件的生命周期的详细说明(两)的更多相关文章

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

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

  2. Maven专题3——生命周期与插件

    三套生命周期 Maven有3套相互独立的生命周期,用户可以调用某个生命周期的阶段,而不会对其他生命周期产生影响. 每个生命周期包含一些有先后顺序的阶段,后面的阶段依赖于前面的阶段,意味着用户调用后面的 ...

  3. Maven整理笔记の生命周期和插件

    项目构建的生命周期,其实软件开发人员每天都在干这个事,即项目清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等,可以说几乎所有项目的构建都可以映射到这样一个生命周期上. Maven的插件 ...

  4. maven核心概念--生命周期

    maven有一个命令,mvn package,该命令行并没有指定一个插件目标, 而是指定了一个Maven生命周期阶段.一个阶段是在被Maven称为"构建生命周期"中的一个步骤.生命 ...

  5. Maven的构建生命周期理解

    以下引用官方的生命周期解释https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html: 一.构建生命 ...

  6. 介绍maven构建的生命周期

    介绍maven构建的生命周期 这篇是 https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 的 ...

  7. Maven构建的生命周期

    什么是构建生命周期 构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序.这里的阶段是生命周期的一部分.举例说明,一个典型的 Maven 构建生命周期是 ...

  8. 项目构建之maven篇:6.生命周期与插件

    项目生命周期 清理 初始化 编译 測试 打包 部署 三套生命周期 1.clean pre-clean 运行一些须要在clean之前完毕的工作 clean 移除全部上一次构建生成的文件 post-cle ...

  9. maven的三大生命周期

    一.Maven的生命周期 Maven的生命周期就是对所有的构建过程进行抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有的构建步骤. Maven的生命周期 ...

随机推荐

  1. AOP 之 6.1 AOP基础 ——跟我学spring3(转)

    http://jinnianshilongnian.iteye.com/blog/1418596

  2. SWT中在treeview中显示图片

    package com.repositoryclient.treeview; import org.eclipse.jface.resource.ImageDescriptor; import org ...

  3. hdu1698(线段树)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1698 线段树功能:update:成段替换 (由于只query一次总区间,所以可以直接输出1结点的信息) ...

  4. 什么样的企业造什么样的软件最easy成功?

    事件1: 一般软件企业按功能分,大体分业务应用型软件和系统工具型软件. 按市场分,应用型软件企业较多,直接贴近生活:系统工具类较少,间接贴近大众较少. 事件2: 软件企业中,当中中小型企业老板存在非常 ...

  5. 关于MySQL与SQLLite的Group By排序原理的差别

    当我们对一个表的记录进行group by的时候,在未明白使用sum.min.max等聚合函数的时候,group by 的排序规则,例如以下对照了MYSQL和SQLLite 大家都知道,group by ...

  6. 存储管理(一):openfiler介绍及存储理解

    openfiler是一个免费的.开源的基于浏览器的网络存储产品,支持基于文件的的网络连接存储(NAS)和基于块的存储区域网(SAN).支持的协议有smb,cifs,nfs,http/dev和ftp. ...

  7. QT Programming 1

    1.控制台输出 helloworld #include<QtCore/QCoreApplication> #include<QDebug> int main(int argc, ...

  8. Z.ExtensionMethods 扩展类库

    Z.ExtensionMethods 一个强大的开源扩展库 今天有意的在博客园里面搜索了一下 Z.ExtensionMethods 这个扩展类库,确发现只搜到跟这个真正相关的才两篇博文而已,我都点进去 ...

  9. poj1236 有向图加边变成强连通图

    给我们一个有向图,有两个问题 1.最少要给多少个点发消息,才能使得所有的点都收到消息(消息可以随边传递) 2.最少需要多少条边才能使得图变成强连通图 对于一个强连通分量,可以当做一个点来考虑,所以我们 ...

  10. 域名注册查询接口(API)的说明

    1.域名查询 接口采用HTTP,POST,GET协议: 调用URL:http://panda.www.net.cn/cgi-bin/check.cgi 参数名称:area_domain 值为标准域名, ...