「APACHE-GROOVY」- 基于 Java 的动态编程语言 | APACHE-GROOVY

认识

官网:https://groovy-lang.org/index.html
文档:https://groovy-lang.org/single-page-documentation.html
仓库:https://github.com/apache/groovy

Apache Groovy 是一种基于 Java 平台的动态编程语言。简而言之,Apache Groovy 是种脚本语言,运行在 JVM 上。

组成

命令行程序 and 配置文件

groovy | groovy.bat

grape | grape.bat
groovyConsole | groovyConsole.bat
groovyc | groovyc.bat
groovydoc | groovydoc.bat
groovysh | groovysh.bat
java2groovy | java2groovy.bat
startGroovy | startGroovy.bat

性质

它支持面向对象编程、函数式编程、元编程和动态类型语言的特性。
Apache Groovy 可以与 Java 语言无缝集成,可以直接调用 Java 类库,也可以被 Java 代码调用。
Apache Groovy 的语法简洁、易读、易写,它的语法和 Java 语言相似,但却更加灵活,可以更快地开发出高效的应用程序。
Apache Groovy 还支持闭包、类型推断、运行时元编程等高级特性,使得编写代码更加方便快捷。

构建

环境安装

下载地址 | https://groovy.apache.org/download.html

版本选择

Release notes for Groovy | https://groovy-lang.org/releases.html

各版本 Groovy 要求的 JVM 的版本 | System requirements
https://groovy.apache.org/download.html#requirements


Groovy	JVM Required (non-indy)	JVM Required (indy) *
5.0 (in alpha)	N/A	11
4.0	N/A	1.8+
3.0	1.8+	1.8+
2.5 - 2.6	1.7+	1.7+
2.3 - 2.4	1.6+	1.7+
2.0 - 2.2	1.5+	1.7+
1.6 - 1.8	1.5+	N/A
1.5	1.4+	N/A
1.0	1.4-1.7	N/A

with asdf

asdf plugin-list all | grep -i groovy
asdf plugin-add groovy
asdf list all groovy
asdf install groovy 2.4.21
asdf global groovy 2.4.21
groovy –version

for Build Tools

例如,针对 Maven 工具

<groupId>org.codehaus.groovy</groupId>
<artifactId>groovy-all</artifactId>
<version>x.y.z</version>
<type>pom</type> <!-- required JUST since Groovy 2.5.0 -->

应用

由于其良好的兼容性和易用性,Apache Groovy 被广泛应用于 Web 开发、测试自动化、数据分析等领域。

场景 | Jenkins Pipeline

在学些 Jenkins Pipeline 语法时,我们接触到 Groovy 语言。我们决定对 Groovy 进行简单学习,以编写功能强大的 Pipeline Shared Libraries 库。该笔记将记录:我们学习 Apache Groovy 而产生学习笔记,以及常见问题而解决办法(常用的代码段),以解决 Jenkins Pipeline 中相关问题为核心。

场景 | 开发常用实用工具

我们通过 Groovy 来开发常用工具及实用程序,原因在于:

  • 早期,开发 Jenkins Pipeline 库时我们编写许多代码,所以,为减少重复工作。
  • 另外,当通过 Shell 实现复杂工具时,受其限制,难以开发,而高级语言相对简单。

操作 .ini 文件

def configFile = new File(configFileId)
def properties = new Properties()
configFile.withInputStream { properties.load(it) }
configFileContent = properties as Map