Maven(6)——Maven插件浅谈

目录

一、Maven 插件

二、插件类型

三、使用示例

四、常用插件介绍

1、两种方式调用Maven插件目标

2、maven-archetype-plugin

3、maven-assembly-plugin

4、maven-dependency-plugin

5、maven-help-plugin

6、maven-release-plugin

7、maven-resources-plugin

8、jetty-maven-plugin

9、versions-maven-plugin


Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。

一、Maven 插件

之前的文章介绍了Maven的三套生命周期:clean,default,site。

每个生命周期中都包含着一系列的阶段(phase)。这些 phase 就相当于 Maven 提供的统一的接口,然后这些 phase 的实现由 Maven 的插件来完成。例如在clean生命周期中,输入的clean命令: mvn clean,具体的clean操作就是由 maven-clean-plugin 来实现的。

Maven 实际上是一个依赖插件执行的框架, Maven 生命周期的每一个阶段的具体实现都是由 Maven 插件实现的。

Maven插件语法:

mvn [plugin-name]:[goal-name]
示例:mvn compiler:compile

二、插件类型

两种类型插件:

  • 构建插件 在生成过程中执行,并在 pom.xml 中的<build/> 元素进行配置 
  • 报告插件 在网站生成期间执行,在 pom.xml 中的 <reporting/> 元素进行配置 

常见的插件列表:

插件描述
clean编译后的清理目标,删除目标目录
compiler编译 Java 源文件
surefile运行JUnit单元测试,创建测试报告
jar从当前项目构建 JAR 文件
war从当前项目构建 WAR 文件
javadoc产生用于该项目的 Javadoc
antrun从构建所述的任何阶段运行一组 Ant 任务

命名规范:

Maven官方插件:maven-<pluginName>-plugin

第三方插件:<yourplugin>-maven-plugin

三、使用示例

在之前文章Maven生命周期中使用的插件Maven-antrun-plugin:

<build>
		<plugins>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-antrun-plugin</artifactId>
				<version>1.1</version>
				<executions>
					<execution>
						<id>id.pre-clean</id>
						<phase>pre-clean</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<echo>pre-clean phase</echo>
							</tasks>
						</configuration>
					</execution>
					<execution>
						<id>id.clean</id>
						<phase>clean</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<echo>clean phase</echo>
							</tasks>
						</configuration>
					</execution>
					<execution>
						<id>id.post-clean</id>
						<phase>post-clean</phase>
						<goals>
							<goal>run</goal>
						</goals>
						<configuration>
							<tasks>
								<echo>post-clean phase</echo>
							</tasks>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>

四、常用插件介绍

参考:https://zhanghaiyang.blog.csdn.net/article/details/51919366

1、两种方式调用Maven插件目标

第一种方式是将插件目标与生命周期阶段(lifecycle phase)绑定,这样用户在命令行只是输入生命周期阶段而已。
例如Maven默认将maven-compiler-plugin的compile目标与 compile生命周期阶段绑定,因此命令mvn compile实际上是先定位到compile这一生命周期阶段,然后再根据绑定关系调用maven-compiler-plugin的compile目标。

第二种方式是直接在命令行指定要执行的插件目标,例如mvn archetype:generate 就表示调用maven-archetype-plugin的generate目标,这种带冒号的调用方式与生命周期无关。

2、maven-archetype-plugin

Archtype指项目的骨架,mvn archetype:generate命令。实际上就是让maven-archetype-plugin生成一个很简单的项目骨架,帮助开发者快速上手。

3、maven-assembly-plugin

maven-assembly-plugin的用途是制作项目分发包,该分发包可能包含了项目的可执行文件、源代码、readme、平台脚本等等。

maven-assembly-plugin支持各种主流的格式如zip、tar.gz、jar和war等,具体打包哪些文件是高度可控的,例如用户可以 按文件级别的粒度、文件集级别的粒度、模块级别的粒度、以及依赖级别的粒度控制打包,此外,包含和排除配置也是支持的。

maven-assembly- plugin要求用户使用一个名为assembly.xml的元数据文件来表述打包,它的single目标可以直接在命令行调用,也可以被绑定至生命周期。

4、maven-dependency-plugin

maven-dependency-plugin最大的用途是帮助分析项目依赖,

  • dependency:list 能够列出项目最终解析到的依赖列表,
  • dependency:tree 能进一步的描绘项目依赖树,
  • dependency:analyze 可以告诉你项目依赖潜在的问题,如果你有直接使用到的却未声明的依赖,该目标就会发出警告。

maven-dependency-plugin还有很多目标帮助你操作依赖文件,例如dependency:copy-dependencies能将项目依赖从本地Maven仓库复制到某个特定的文件夹下面。

5、maven-help-plugin

maven-help-plugin是一个小巧的辅助工具

  • help:system 可以打印所有可用的环境变量和Java系统属性
  • help:effective-pom 打印项目的有效POM,有效POM是指合并了所有父POM(包括Super POM)后的XML,当你不确定POM的某些信息从何而来时,就可以查看有效POM
  • help:effective-settings打印项目的有效settings,有效settings同理,特别是当你发现自己配置的 settings.xml没有生效时,就可以用help:effective-settings来验证。

maven-help-plugin的describe目标可以帮助你描述任何一个Maven插件的信息,还有all-profiles目标和active-profiles目标帮助查看项目的Profile。

6、maven-release-plugin

maven-release-plugin的用途是帮助自动化项目版本发布,它依赖于POM中的SCM信息。

  • release:prepare 用来准备版本发布,具体的工作包括检查是否有未提交代码、检查是否有SNAPSHOT依赖、升级项目的SNAPSHOT版本至RELEASE版本、为项目打标签等等。
  • release:perform 则是签出标签中的RELEASE源码,构建并发布。版本发布是非常琐碎的工作,它涉及了各种检查,而且由于该工作仅仅是偶尔需要,因此手动操作很容易遗漏一些细节

maven-release-plugin让该工作变得非常快速简便,不易出错。maven-release-plugin的各种目标通常直接在 命令行调用,因为版本发布显然不是日常构建生命周期的一部分。

7、maven-resources-plugin

Maven区别对待Java代码文件和资源文件,maven-compiler-plugin用来编译Java代码,maven-resources-plugin则用来处理资源文件。

默认的主资源文件目录是src/main/resources,很多用户会需要添加额外的资源文件目录,这个时候就可以通过配置maven-resources-plugin来实现。

此外,资源文件过滤也是Maven的一大特性,你可以在资源文件中使用${propertyName}形式的Maven属性,然后配置maven-resources-plugin开启对资源文件的过滤,之后就可以针对不同环境通过命令行或者Profile传入属性的值,以实现更为灵活的构建。

8、jetty-maven-plugin

在进行Web开发的时候,打开浏览器对应用进行手动的测试几乎是无法避免的,这种测试方法通常就是将项目打包成war文件,然后部署到Web容器 中,再启动容器进行验证,这显然十分耗时。

为了帮助开发者节省时间,jetty-maven-plugin应运而生,它完全兼容 Maven项目的目录结构,能够周期性地检查源文件,一旦发现变更后自动更新到内置的Jetty Web容器中。

做一些基本配置后(例如Web应用的contextPath和自动扫描变更的时间间隔),你只要执行 mvn jetty:run ,然后在IDE中修改代码,代码经IDE自动编译后产生变更,再由jetty-maven-plugin侦测到后更新至Jetty容器,这时你就可以直接 测试Web页面了。

需要注意的是,jetty-maven-plugin并不是宿主于Apache或Codehaus的官方插件,因此使用的时候需要额外 的配置settings.xml的pluginGroups元素,将org.mortbay.jetty这个pluginGroup加入。

9、versions-maven-plugin

versions-maven- plugin提供了很多目标帮助你管理Maven项目的各种版本信息。

最常用的,命令 mvn versions:set -DnewVersion=1.1-SNAPSHOT 就能帮助你把所有模块的版本更新到1.1-SNAPSHOT。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值