插件配置



定义解释:插件目标

当我们了解了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. 【译】ASP.NET MVC 5 教程 - 8:搜索查询

    原文:[译]ASP.NET MVC 5 教程 - 8:搜索查询 添加一个搜索的方法和搜索的视图 在本节中,我们为 Index 方法添加查询功能,使我们能够根据电影的题材或名称进行查找. 修改 Inde ...

  2. ARMv8 Linux内核异常处理过程分析

    NOTE:为了方便大家阅读,制作了PDF版文档.下载请猛戳这里 老样子,为了赚点积分下载其它人的文件,下载以上资料须要资源分2分. 假设没有积分请留言全部文档,留下邮箱就可以. 看了Linaro提供的 ...

  3. 【Java探索道路安全系列:Java可扩展的安全架构】一间:Java可扩展的安全体系结构开始

    笔者:郭嘉 邮箱:allenwells@163.com 博客:http://blog.csdn.net/allenwells github:https://github.com/AllenWell [ ...

  4. cocos2d-x截图功能clippingnode它也可用于——白费

    许多其他精彩分享:http://blog.csdn.net/u010229677 3.1版本号: 在Director数: bool Director::saveScreenshot(const std ...

  5. codeforces55D数位dp

    codeforces55D 查询给定区间内的beautiful number.  一个数字是beautiful number当且仅当能被自己的各个数字不为0的位整除. 这个dp的状态还是挺难想的.一个 ...

  6. Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask

    原文:Windows Phone开发(26):启动器与选择器之MediaPlayerLauncher和SearchTask 启动器与选择器简单的地方在于,它们的使用方法几乎一模一样,从前面几节中,我相 ...

  7. Java乔晓松-android中上传图片到服务器Tomcat(Struts2)

    在做android开发的时候,有时你会用到图片的上传功能,在我的android项目中,我是选中图片,点击上传多张图片 android客户端上传图片部分的代码如下: package com.exampl ...

  8. c++ 计算程序运行时间

    转载 http://blog.csdn.net/trustbo/article/details/10582287 以前经常听人提起如何计算程序运行时间,给出一系列函数,当时没有注意,随便选了clock ...

  9. chromium for android v34 2dcanvas硬件渲染实现分析

    这篇接着上一篇2dcanvas硬件绘制,分析保存绘制结果的texture被合成到on screen framebuffer上的过程. 1.webkit为canvas元素相应的render树节点Rend ...

  10. [模式识别].(希腊)西奥多里蒂斯&lt;第四版&gt;笔记8它__模板匹配

      在语音识别方面,同样的话都是同一个人,每次说的情况是不同的,难以识别.本章是定义如何适应不同的情况有不同的特性指标. 1,基于最优路径搜索的度量:①贝尔曼最优性原则和动态编程②编辑距离(The E ...