Maven插件之Maven-Enforcer-Plugin

实际开发中,项目经理总会告诉开发人员:开发时要遵守什么什么样的约定,命名规范怎么怎样样....

约定优于配置,很重要!比较规范的公司(或者项目组),会把规范写到文档中,让开发人员去遵守。

问题来了,怎么才能知道大家有没有按照规范走呢?有人会说了,找个工具校验一下就可以了,开源工具很多。是的,这是对的。但对于项目中使用的程序、工具、开发环境呢,有工作经验的人应该都知道,很多时候,新手出现诡异的问题,一部分原因是因为环境不对,或者软件版本不符;这时应该怎么检查呢?

Maven提供了Maven-Enforcer-Plugin插件,用来校验约定遵守情况(或者说校验开发环境)。比如JDK的版本,Maven的版本,开发环境(Linux,Windows),依赖jar包的版本等等;官网地址:

http://maven.apache.org/enforcer/maven-enforcer-plugin/

下面介绍该插件的使用:

<plugin>
	<groupId>org.apache.maven.plugins</groupId>
	<artifactId>maven-enforcer-plugin</artifactId>
	<version>1.3.1</version>
	<executions>
		<execution>
			<id>enforce</id>
			<phase>validate</phase>
			<goals>
				<goal>display-info</goal>
				<goal>enforce</goal>
			</goals>
		</execution>
	</executions>
	<configuration>
		<!--规则检查不通过就构建失败;Default:false. -->
		<!--<failFast>true</failFast>-->
		<rules>
			<requireMavenVersion>
				<version>3.0.4</version>
			</requireMavenVersion>
			<requireJavaVersion>
				<version>1.6.0</version>
			</requireJavaVersion>
			<bannedDependencies>
				<!--是否检查传递性依赖(间接依赖)-->
				<searchTransitive>true</searchTransitive>
				<excludes>
					<exclude>junit:junit</exclude>
				</excludes>
				<message>must use TestNG</message>
			</bannedDependencies>
		</rules>
	</configuration>
</plugin>

该插件基于 < rules > 进行校验 , 以上配置了三条规则 :

requireMavenVersion表示Maven的版本大于等于3.0.4;

requireJavaVersion表示JDK的版本大于等于1.6.0;

bannedDependencies表示禁止使用的依赖,其可用配置如下:

searchTransitive:是否搜索间接依赖;

excludes:禁止依赖列表;其表示格式为groupId[:artifactId][:version][:type][:scope][:classifier]中括号内为可选,可使用通配符替换整体或者部分;例如,以下demo为有效:

<excludes>

<!--groupId[:artifactId][:version][:type][:scope][:classifier]-->

<exclude>org.log</exclude>

<exclude>org.log:log4j</exclude>

<exclude>org.log:log4j:1.0</exclude>

<exclude>org.log:*:1.2</exclude><!--排除1.2及其以上版本,等价于[1.2,)-->

<exclude>org.log:*:[1.2]</exclude><!--明确排除1.2版本-->

<exclude>org.log:*:*:jar:test</exclude>

<exclude>*:*:*:jar:compile:tests</exclude>

<exclude>org.apache.*:maven-*:*</exclude>

</excludes>

includes:从禁止的依赖中排除的依赖列表(当excludes使用通配符时,可使用此属性排除);

message:校验失败,打印的提示信息;

如果想要配置更为复杂的版本范围,可参考:http://maven.apache.org/enforcer/enforcer-rules/versionRanges.html

除了以上的配置外,该插件内置了很多其他的规则,内置规则完整列表在:http://maven.apache.org/enforcer/enforcer-rules/index.html

maven默认提供了多种校验规则,满足我们各种需求;同时又提供了maven-enforcer-rule-api允许我们自定义规则,具体参见:http://maven.apache.org/enforcer/enforcer-api/writing-a-custom-rule.html


补充如下(重要)
到目前为止,Maven没有提供类似Java的@Deprecated注解,用于声明依赖废弃。因为在pom.xml中会引入一些错误的、过时了的、废弃的依赖;又由于Maven的依赖传递特性,很容易会引入不想要的jar(尤其是有冲突的jar)。
基于此种情况,使用Maven-Enforcer-Plugin插件可以达到以上的目的。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值