java - 用Groovy写一个Maven插件和Java相比有什么优势?

标签 java git maven-2 groovy

我将要编写几个 Maven 插件来减轻研发人员的工作负担。我正在考虑是用 Groovy 还是用 Java 编写插件。

插件很可能需要:

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

您从使用两种语言编写插件的丰富经验中获得的任何提示都将对我有很大帮助!

最佳答案

我对这两种语言都有丰富的经验,也写过一些 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
    

此外,GMaven 还支持 writing Maven plugins in Groovy它看起来比用 Java 编写插件时必须使用的 AbstractMojo 类好很多

一边

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

关于java - 用Groovy写一个Maven插件和Java相比有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3890052/

相关文章:

java - 如何从 oracle.ucp.jdbc.PoolDataSource 获取 oracle.jdbc.OracleConnection

java - 如何使用 net.sf.json 库验证给定字符串是否有效 JsonArray

java - 使用 jQuery 或 JavaScript 读取属性文件

java - 如果存在 Optional<> 则抛出异常

git - 为什么 git 树对象不以与提交和标签相同的方式对 SHA-1 哈希进行编码?

java - 调用 exec :java plugin in maven? 时如何传递 systemProperties

windows - 在 Windows 上从命令行向 git commit -m 添加换行符

Git 排除除名为 Views 的文件夹之外的所有文件夹中与名称匹配的所有文件

maven-2 - WSDL2Code (Maven) 自动生成损坏的类(包)

tomcat - 不能让 tomcat-maven-plugin 创建日志文件吗?