maven 插件开发
来源:互联网 发布:数据分析技术 编辑:程序博客网 时间:2024/06/02 04:57
背景:
项目中使用了一些内部的二方包,有些是公共的工具类封装,有些是一些client的api。在开发的时候通常使用的是SNAPSHOT 版本,在正式发布的时候通常需要使用正式版本,但是这个很容易忽视,导致下一次发布的时候可能因为版本的原因导致线上出错。所以这里开发一个maven插件,在打包的时候可以检验依赖树中内部二方包是否使用了SNAPSHOT版本。
插件开发:
maven插件相关的资料网上都有,不过基本都是最简单的打个hello world。基本就是能帮你搭个环境,其他的就指望不上了。根据上面的背景需求,最重要的是能够获取到当前项目的依赖树。通过注入MavenProject 可以方便的获取相应的依赖,核心代码如下
/** * The Maven project to analyze. * * @parameter expression="${project}" * @required */ private MavenProject project; /** * 当前环境 * * @parameter expression="${envirment}" * @required */ String envirment; @Override public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("-------------------- ╮(╯▽╰)╭ ------------------------"); getLog().info("------------------------------------------------------------------------"); getLog().info("--------------------- AEGIS CHECKERS START --------------------------"); if (!StringUtils.equals(envirment, PRODUCT) && !StringUtils.equals(envirment, PREP)) { getLog().info("--------------------- current envirment is not product or prep --------------------------"); } else { //只校验正式 和预发环境 List<Dependency> dependencyList = project.getDependencies(); List<Dependency> hasSnapDependencyList = new ArrayList<>(); for (Dependency dependency : dependencyList) { if (dependency.getGroupId().contains(YANGT) && dependency.getVersion().contains(SNAPSHOT)) { hasSnapDependencyList.add(dependency); } } if (!hasSnapDependencyList.isEmpty()) { getLog().error("--------------------- AEGIS CHECKERS FAILED --------------------------"); StringBuilder sb = new StringBuilder(); for (Dependency dependency : hasSnapDependencyList) { sb.append(dependency.getGroupId() + ":" + dependency.getArtifactId() + ":" + dependency.getVersion() + ";"); } getLog().error("the following dependency version is SNAPSHOT:" + sb.toString()); throw new MojoFailureException("dependency check fail"); } } getLog().info("--------------------- AEGIS CHECKERS END --------------------------"); }
最后需要注意的是:如果需要发布到远程nexus,需要使用正式版本。如果使用snapshot,会找不到相应的依赖,实际上本地能下载到jar包,但是maven就报找不到plugin,猜测是处于安全的考虑。
0 0
- maven插件开发
- maven 3 插件开发
- Maven插件开发
- Maven插件开发
- maven插件开发简介
- Maven插件开发
- Maven插件开发
- Maven插件开发
- maven 插件开发
- maven插件开发
- maven 自定义插件开发
- maven 自定义插件开发
- Java开发Maven插件
- maven自定义插件开发
- Maven插件开发--Eclipse开发
- 开发自己的Maven插件
- maven插件开发(一)
- maven插件开发(二)
- jsp环境搭建
- android studio 中去除应用标题栏
- online_judge_1101
- java基础(死锁)
- 共同构建网络空间命运共同体
- maven 插件开发
- 这两天的设计入门知识的学习总结
- 如何在ubuntu下安装flash
- Redis文件事件处理用到的基本数据结构视图
- 最长上升子序列
- 软件渲染器、内存文件系统
- hdu 2577 How to Type (动态规划 入门好题)
- bzoj2565(manachery)
- CCF-201509-2