Maven插件之Maven-Enforcer-Plugin

转自

http://www.tuicool.com/articles/RfIBfa


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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值