IDEA当前最流行的一款开发神器,相信大家改变世界(搬砖)的时候都体会到这款ide的强大了吧。今天笔者就来介绍使用IDEA注释模板自动获取本地分支的版本号的功能。
要实现的功能就是注释模板中自动获取本地GIT分支版本:
开发过程中注释是必不可少的,IDEA也提供了强大的注释模板的功能,下面是笔者的初始注释模板,至于怎么新建注释模板这里笔者就不啰嗦的,度娘上面有很多。
模板里面的使用$$包起来的就是取的动态数据,例如时间,日期,包名,方法名等等,IDEA内置了很多很强大的函数,下面是笔者使用的函数模板。
这里对参数和返回值使用groovy脚本做了一些简单处理,比如一些格式换行之类的
// params
groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {result+=' * @param ' + params[i] + ' ' + params[i] + ((i < params.size() - 1) ? '\\n' : '')}; return result", methodParameters())
// return
groovyScript("def result='';def params=\"${_1}\";def prefix = '\\n * @return ';if(!params.equalsIgnoreCase('void')){result = prefix + params;};return result", methodReturnType())
简单介绍一下,脚本里面是使用了内置函数methodParameters() methodReturnType(), 通过groovy处理展示出我们想要的效果,感兴趣的可以格式化出来看一下,语法基本和java没什么区别
这个1.0版本的注释模板存在一个问题就是版本号必须手动替换, 每次拉新的分支版本开发需求总是存在忘记替换版本号,注释就有点混乱。笔者看了内置函数也没有找到和分支版本相关的版本,一次在定制jenkins构建的过程中,使用到了groovy脚本获取项目的git分支,笔者联想到这里是否也可以采用这种方式获取版本号。经过一个多小时的试错终于完成了。下面给大家介绍下结果:
注释模板2.0
// version
groovyScript("try{def path=\"${_1}\";def dir=path.substring(0,path.lastIndexOf(\"\\\\\"));def command = \"git branch\"; def result = command.execute(null, new File(dir)).getText(); def branchs = result.trim().split(\"\\\\n\", -1); for (int i = 0; i < branchs.size(); i++) { if (branchs[i].startsWith(\"*\")) { return branchs[i].substring(branchs[i].indexOf(\"*\") + 1).trim();}};} catch (Exception e){};return \"\";", filePath())
介绍一下,脚本分两部分。第一部分是笔者通过groovy脚本执行cmd命令获取git分支名称并取出当前分支的逻辑,第二部分是获取当前编辑文件路径的内置函数filePath()。下面是脚本的源码:
static def String obtainBranch() {
// try{def path="${_1}";def dir=path.substring(0,path.lastIndexOf("\\"));def command = "git branch"; def result = command.execute(null, new File(dir)).getText(); def branchs = result.trim().split("\\n", -1); for (int i = 0; i < branchs.size(); i++) { if (branchs[i].startsWith("*")) { return branchs[i].substring(branchs[i].indexOf("*") + 1).trim();}};} catch (Exception e){};return "";
try {
// 取外部传参filePath(),当前编辑文件全路径
def path = "${_1}";
// 获取文件目录,必须是git管理的目录
def dir = path.substring(0, path.lastIndexOf("\\"));
// git获取分支版本命令
def command = "git branch";
// 进入dir目录 执行git branch命令
def result = command.execute(null, new File(dir)).getText();
// 结果换行解析
def branchs = result.trim().split("\\n", -1);
for (int i = 0; i < branchs.size(); i++) {
// master
// * 1.0.0
// 当前分支会用*号标识
if (branchs[i].startsWith("*")) {
// 获取当前分支
return branchs[i].substring(branchs[i].indexOf("*") + 1).trim();
}
};
} catch (Exception e) {
};
// 兼容异常情况返回空
return "";
}
脚本中要执行git命令, 所以要把git 加到环境变量中 笔者使用的是gitbash 默认路径 C:\Program Files\Git\bin
最后效果就是: 输入 /** 按TAB键
可以看到已经自动获取到本地分支的版本号,大功告成! 不过因为执行了cmd命令,可能稍微有一点卡顿的感觉,不过还是不影响正常适应。
注意: 不同idea版本 内置函数可能不同, 笔者在朋友的idea上发现没有filePath()这个内置函数
笔者测试的是 idea-2019.3