likes
comments
collection
share

idea插件如何调用maven命令?背景 为了实现和公司数据库框架的结合,考虑再插件调用的时候,执行maven命令,为此

作者站长头像
站长
· 阅读数 33

背景

为了实现和公司数据库框架的结合,考虑再插件调用的时候,执行maven命令,为此查了不少资料,结果发现竟然这么简单。

实践

执行普通命令的时候,需要创建自定义一个RunnerAndConfigurationSettings并且获取Executor进行执行,整体流程其实还是很复杂。所以idea其实也内置了maven命令的调用逻辑。

    private void runDalGen() {
        MavenRunner runner = MavenRunner.getInstance(currentProject);
        MavenRunnerSettings settings = runner.getState().clone();
    }

首先需要引入插件的maven依赖。

intellij {
    version.set("2022.1.4")
    type.set("IU")
    plugins.set(listOf("com.intellij.java","DatabaseTools","org.jetbrains.idea.maven"))
}

之后的流程就是先获取当前项目的MavenRunner对象,同时拷贝一份MavenRunnerSettings,这样就不需要自己去构建RunnerSettings对象。

实例化MavenRunnerParameters对象,MavenRunnerParameters对象就是用来设置maven命令。

        MavenRunnerParameters params = new MavenRunnerParameters();
        String basePath = currentProject.getBasePath();
        // 配置maven坐标和项目路径
        params.setWorkingDirPath(basePath + "\" + projectConfigVO.get_artifactId() + CommonConstants.DAO_SUFFIX);
        // 配置maven命令
        params.setGoals(Collections.singletonList(CommonConstants.DALGEN_GAL));

再调用MavenRunner的runner方法接口即可,run方法还有一个函数式接口,用来实现命令执行后的一些操作。

        runner.run(params, settings, () -> {
        });

最后的效果:

idea插件如何调用maven命令?背景 为了实现和公司数据库框架的结合,考虑再插件调用的时候,执行maven命令,为此

总结

通过MavenRunner就可以方便快速的在插件中执行maven命令,而不需要更多额外的配置类进行创建。

转载自:https://juejin.cn/post/7408847526300106792
评论
请登录