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版本号,这样就攻克了稳定性问题,可是这也可能存在潜在问题,比方说,新版本号的行为与旧版本号的行为发生了变化,这样也会出现构建失败
所以:使用插件的时候,应该显示的设定版本号。
佛之孝:众生皆父母。百善孝为先。
明确心佛众生三无区别,同体名大悲的道理。才知道。关爱他人就是关爱自己,救度他人就是救度自己,对人好,这是对自己好,然后,,众生他们的父母来救度,这是佛的孝心。
版权声明:本文博主原创文章,博客,未经同意不得转载。