maven插件的生命周期的详细说明(两)
插件配置
定义解释:插件目标
当我们了解了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插件的生命周期的详细说明(两)的更多相关文章
- Maven 的插件和生命周期的绑定
一.Maven 的生命周期 Maven 的生命周期是对所有的构建过程进行抽象和统一.Maven 的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶 ...
- Maven专题3——生命周期与插件
三套生命周期 Maven有3套相互独立的生命周期,用户可以调用某个生命周期的阶段,而不会对其他生命周期产生影响. 每个生命周期包含一些有先后顺序的阶段,后面的阶段依赖于前面的阶段,意味着用户调用后面的 ...
- Maven整理笔记の生命周期和插件
项目构建的生命周期,其实软件开发人员每天都在干这个事,即项目清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等,可以说几乎所有项目的构建都可以映射到这样一个生命周期上. Maven的插件 ...
- maven核心概念--生命周期
maven有一个命令,mvn package,该命令行并没有指定一个插件目标, 而是指定了一个Maven生命周期阶段.一个阶段是在被Maven称为"构建生命周期"中的一个步骤.生命 ...
- Maven的构建生命周期理解
以下引用官方的生命周期解释https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html: 一.构建生命 ...
- 介绍maven构建的生命周期
介绍maven构建的生命周期 这篇是 https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 的 ...
- Maven构建的生命周期
什么是构建生命周期 构建生命周期是一组阶段的序列(sequence of phases),每个阶段定义了目标被执行的顺序.这里的阶段是生命周期的一部分.举例说明,一个典型的 Maven 构建生命周期是 ...
- 项目构建之maven篇:6.生命周期与插件
项目生命周期 清理 初始化 编译 測试 打包 部署 三套生命周期 1.clean pre-clean 运行一些须要在clean之前完毕的工作 clean 移除全部上一次构建生成的文件 post-cle ...
- maven的三大生命周期
一.Maven的生命周期 Maven的生命周期就是对所有的构建过程进行抽象和统一.包含了项目的清理.初始化.编译.测试.打包.集成测试.验证.部署和站点生成等几乎所有的构建步骤. Maven的生命周期 ...
随机推荐
- JSP网站开发基础总结《九》(转)
本篇属于附加篇,在之前的总结中给大家提到过一个关于登录状态验证的效果,当时是通过Session对象完成的,今天我查了一下,JSP为我们封装了一个用于过滤用的过滤器类Filter,通过它我们就可以非常轻 ...
- 所有javax包
所有jar包 > javax javax 下载 javax jar 包 本站下载镜像: javax-jmi-model.jar.zip javax-jmi-reflect.jar.zip jav ...
- java參数传递方式问题
java的參数传递方式到底是值传递还是引用传递,这一直是一个争论不休的问题,一直以来没有形成统一意见. 在这里,我也仅仅是说一说个人见解,不保证是对的,全当是抛砖引玉. 首先我的观点是java採用的是 ...
- extjs4 分页工具栏pagingtoolbar的每页显示数据combobox下拉框
var itemsPerPage = 20; var combo; //创建数据源store Ext.define('recordStore', { extend : 'Ext.data.Store' ...
- ios UITableView 相关
1.tableView 实现的方法 无分组的cell #pragma mark - Table view data source - (NSInteger)tableView:(UITableView ...
- Android中Broadcast Receiver组件具体解释
BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...
- Android编程心得-Service数据绑定初步
在Android里,Service的数据绑定是一种重要的用法,我们知道Service与Activity一样是运行在当前应用进程的主线程里面的,他们之间交互的方式有多种,下面我来介绍一下如何使用数据绑定 ...
- 宏碁宣布Liquid Jade智能机和Leap袖口
据科技网站Android Community 4月29日覆盖,宏碁29公布的新智能机Liquid Jade而随着智能手镯部署Liquid Leap.尽管宏碁已经宣布了一项新的外部基本信息.但价格格和商 ...
- eclipse 代码清理 代码格式化 代码凝视
Code Style包含两个方面:代码清理,代码规范化.代码清理能够參考: http://www.ibm.com/developerworks/cn/opensource/os-eclipse-cle ...
- SplitContainer如何实现左侧导航,正确显示和导航内容
关于这种类型的设计有很多的实现,这样,我首先解释一下我使用: 我的原则是实现方式,将form嵌panel在,作为一个子窗口. 如下面的代码细节: Form form = new DataSelect( ...