与Java相比,在Groovy中编写Maven插件有什么好处?

Asa*_*ika 3 java git groovy maven-2

我即将编写几个Maven插件来缓解研发人员的生活.我正在考虑用Groovy或Java编写插件.

该插件很可能需要:

  • 使用Git命令,如checkout,clone等.
  • 从远程存储库(我们的内部Nexus)下载特定工件的pom.xml文件
  • 解析pom.xml文件以提取多个XML元素(例如SCM标记,以及我的插件所需的特定元素).
  • 使用文件系统(目录存在,删除目录等).
  • 从pom文件(例如依赖项)中获取元数据信息.

您在使用这两种语言编写插件的丰富经验中可能获得的任何提示都将对我有所帮助!

Dón*_*nal 6

我对这两种语言都有很多经验,并且还编写了一些Maven插件.我用Java编写它们,因为我别无选择,但如果我有选择,我会选择Groovy.

在我看来,除非性能绝对至关重要,否则无论你在做什么,Groovy通常都是比Java更好的选择.我这样说是因为在Groovy中编写内容通常比在Java中编写内容少30%-50%.使用Groovy时省略的大多数代码都被认为是样板Java代码.

Groovy的紧凑性是由两个因素造成的

  • 更复杂的语言功能(闭包,属性,运算符重载,默认参数等)
  • JDK的高效率扩展.该GDK增加了许多非常有用的方法到Java标准库.例如,在Java中,需要大约10-20行代码来读取文件的内容(并正确处理异常).使用Groovy你可以简单地使用:

    String fileContent = new File('/foo/bar/baz.txt').text
    
    Run Code Online (Sandbox Code Playgroud)

此外,GMaven支持在Groovy中编写Maven插件,这看起来比AbstractMojo在Java中编写插件时必须使用的类要好得多

在旁边

您提到您的插件需要解析pom.xml.如果这是安装了插件的项目的pom.xml,则不需要解析内容,因为插件可以通过实例获取有关项目的所有信息MavenProject.