maven详解之生命周期与插件(二)

简介: 插件配置 定义解释:插件目标 当我们了解了maven插件之后,我们发现如果为每一个功能编写一个独立的插件显然是不可取的,因为这些任务背后有很多可以复用的代码,因此,把这些功能聚集在一个插件里,每一个功能我们就称之为一个插件目标。 举个例子: maven-dependency-plugin有十多个目标,每个目标对应了一个功能 分析项目依赖:dependency:analyze

插件配置


定义解释:插件目标

当我们了解了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插件都来自于ApacheCodeHaus

因为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补齐。但是一般情况下不推荐此种用法,因为只剩下了一行配置,而且容易对新手造成费解。

2.省略版本配置:

maven的POM是采用了继承的机制(在maven的聚合与继承中有详细介绍),Maven中有一个超级POM,所有的项目都继承了这个超级POM的配置,因此用户不加任何配置,Maven使用核心插件的时候,他们的版本就已经确定了。

maven-clean-plugin

maven-compiler-plugin

maven-surefire-plugin

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

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

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

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






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

明白心佛众生三无差别,同体名大悲的道理,才知道,关爱他人就是关爱自己,救度他人就是救度自己,对人好,才是对自己好,于是,把众生都当做自己的父母来救度,此为佛之孝道。

目录
相关文章
|
3月前
|
Java Maven Android开发
在Eclipse里配置Maven插件
Maven是一款比较常用的Java开发拓展包,它相当于一个全自动jar包管理器,会导入用户开发时需要使用的相应jar包。使用Maven开发Java程序,可以极大提升开发者的开发效率。下面我就跟大家介绍一下如何在Eclipse里安装和配置Maven插件。
46 0
|
4月前
|
存储 Java Maven
IDEA常用插件之类Jar包搜索Maven Search
IDEA常用插件之类Jar包搜索Maven Search
119 0
|
4月前
|
Java Maven
idea Maven Helper插件使用方法
idea Maven Helper插件使用方法
124 0
idea Maven Helper插件使用方法
|
27天前
|
IDE Java Apache
常用 Maven 插件大全
常用 Maven 插件大全
7 0
|
2月前
|
JavaScript Java Apache
【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
【SpringBoot】Maven 版本管理与 flatten-maven-plugin 插件的使用及分析
181 0
|
2月前
|
Java 测试技术 Maven
boot项目添加运行参数的maven插件
boot项目添加运行参数的maven插件
32 0
|
2月前
|
Java 测试技术 Maven
单元测试添加运行参数的maven插件
单元测试添加运行参数的maven插件
19 0
|
3月前
|
Java Maven Docker
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
SpringBoot项目打包部署到阿里云服务器、通过Maven插件制作Docker镜像、部署项目容器、配置生产环境
114 0
|
4月前
|
XML Java 程序员
深入探讨Maven构建生命周期及插件机制
深入探讨Maven构建生命周期及插件机制
51 0
|
4月前
|
前端开发 Java Maven
Maven 插件统一修改聚合工程项目版本号
Maven 插件统一修改聚合工程项目版本号

推荐镜像

更多