自定义maven enforcer验证规则

    现在有一个需求,要求所有web项目在上线前都得在一个properties文件里配有一个属性。假设需求是在每个web项目的WEB-INF\classes目录下的settingConfig.properties文件里需要有一个value值为login.jsp,key可以随意定义。我们的web项目有二、三十个,为避免马虎的同学没按照要求来,也为减少运维同学的工作量我决定引入强制检查。我们在用maven,就自然的想到了enforcer这个插件。

    上Maven Enforcer Plugin网站一查,果然没有直接可用的规则,那就自己写吧。

    其实maven的插件机制还是挺不错的,它内部也用了一个IoC控制反转的框架,叫plexus,你自己编写的插件只要实现它提供的一个接口,外加几个注解即可搞定,这是Maven Enforcer Plugin的源码,一看就基本知道什么个意思:

@Mojo( name = "enforce", defaultPhase = LifecyclePhase.VALIDATE, threadSafe = true )
public class EnforceMojo
    extends AbstractMojo
    implements Contextualizable{
@Parameter( property = "enforcer.fail", defaultValue = "true" )
    protected boolean fail = true;
    //省略……
}

    我呢,是增加Enforcer Plugin的一个规则,这就更简单了,引用它提供的jar包,实现它提供的org.apache.maven.enforcer.rule.api.EnforcerRule接口即可。官网的例子其实已经很详细了。链接在这儿

    我实现的代码在下面,首先是两个公用类:

public abstract class AbstractStandardEnforcerRule implements EnforcerRule {
    /**
     * Specify a friendly message if the rule fails.
     */
    private String message = null;
    /**
     * 是否跳过检查
     */
    private boolean skip = false;
    //getter and setter……
}

public abstract class AbstractNonCacheableEnforcerRule
        extends AbstractStandardEnforcerRule{
    /*
     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#getCacheId()
     */
    public String getCacheId(){
        return "0";
    }
    /*
     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isCacheable()
     */
    public boolean isCacheable(){
        return false;
    }
    /*
     * @see org.apache.maven.enforcer.rule.api.EnforcerRule#isResultValid(org.apache.maven.enforcer.rule.api.EnforcerRule)
     */
    public boolean isResultValid( EnforcerRule cachedRule ){
        return false;
    }
}

    这个是我定义的配置Bean,maven插件把xml到java Bean的转换都做了,太方便了。

public class RequirePropertyFileBean {
    private String location;
    private String property;
    private String regex;
    //getter and setter……
}

    这三个属性一看便知意思。location是要检查的properties文件的路径,property是properti

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值