Groovy 在后端也能尝到脚本语言的快感Groovy

Apache的Groovy是Java平台上设计的面向对象编程语言。这门动态语言拥有类似Python、Ruby和Smalltalk中的一些特性,可以作为Java平台的脚本语言使用,Groovy代码动态地编译成运行于Java虚拟机(JVM)上的Java字节码,并与其他Java代码和库进行互操作。由于其运行在JVM上的特性,Groovy可以使用其他Java语言编写的库。Groovy的语法与Java非常相似,大多数Java代码也符合Groovy的语法规则,尽管可能语义不同。 --Groovy wiki

关于maven添加Groovy开发的文档已经有一些了 我想做一些详细的介绍

目录Maven 配置groovy 插件

在 idea 中开发的配置&答疑

Maven 配置groovy 插件

版本要求JDK 1.6及以上

Maven 3.0.1及以上

配置pom.xml

要编译同时包含Java和Groovy的项目(并且两者之间具有依赖关系),除了正常编译之外,还需要生成存根(stubs)。

在pom.xml中需要添加如下配置 PS:以下配置只包含需要添加进pom.xml的内容

pom.xml

org.codehaus.gmavenplus

gmavenplus-plugin

1.7.1

addSources

addTestSources

generateStubs

compile

generateTestStubs

compileTests

removeStubs

removeTestStubs

org.apache.maven.plugins

maven-compiler-plugin

org.codehaus.groovy

groovy-all

2.5.7

pom

这些配置将会把src/main/java和src/main/groovy作为源码目录.

如果没有src/main/groovy请创建,并在此处编辑.groovy文件

增加其他目录作为源码目录

如果要使用其他目录作为Groovy源码目录,

比如src/additionalGroovy,则需要做以下配置

pom.xml

org.codehaus.gmavenplus

gmavenplus-plugin

1.7.1

addSources

addTestSources

generateStubs

compile

generateTestStubs

compileTests

removeStubs

removeTestStubs

${project.basedir}/src/main/groovy

**/*.groovy

${project.basedir}/src/additionalGroovy

**/*.groovy

以上配置会把src/main/groovy和 src/additionalGroovy目录作为Groovy源码目录 maven 的生命周期中就能正确的编译了,然后,愉快的使用Groovy吧

Groovy 为什么能和java混合开发

1.所有.groovy文件会经过groovyc编译成class文件,对于JVM来说与Java编译后没有区别.

2.在Maven中,引入gmavenplus-plugin插件后,插件会将.groovy,.java分别编译并添加到Maven源目录,然后通过Maven打包

gmavenplus-plugin插件参数简介

介绍为什么要加这么多标签?

Because we need to mix Groovy and Java lifecycles together. The only other way to do this is a with a custom lifecycle. This seemed inappropriate since you have to introduce a new type (which both GMaven and GMavenPlus did at one time as groovy-jar). But what if you are mixing Groovy, Java, and another language (maybe Scala)? We'd have to define types for all the combinations. It also seemed inappropriate that consumers of your artifact should be aware of the fact it was written in another language.

个人翻译:

因为我们需要将Groovy和Java生命周期混合在一起。另外还有一种方法是使用自定义生命周期,但是不太合适,因为你必须引入一种新类型(GMaven和GMavenPlus同时作为groovy-jar)才能使用。但是如果你混合使用Groovy,Java和另一种语言(也许是Scala),我们必须为所有组合定义类型。不能让引用你代码的地方自己判断源码的语言.所以需要增加这些标签处理为JVM可以理解的class,统一处理 列表

知乎文章好像没法识别Markdown的表格格式,只能先传图了,如果是我不会用,请告诉我怎么做表格goal 各项解释

idea 配置&答疑

在使用Idea集成开发环境进行代码开发的时候,会出现找不到Groovy类的情况

是因为Idea会按照Mavenpom.xml配置的源文件目录进行识别(默认目录${project.basedir}/src/main/java)

就算在GMaven-plugin配置了指定源目录也不行,因为Idea不懂这个(可能后续会添加支持)

有2个方法可以解决这个问题, 主要目的是让Idea知道我们Groovy的目录是源码目录

方法1.配置Idea Project Structure

1.打开 Idea 的菜单 并进入 File-> Project Structure -> module 2.如下图①选择需要增加为源码的目录 3.如图②,标记为源码目录Idea 配置 源码目录

方法2.配置Maven pom.xml 修改源码目录

在以下节点添加配置 pom.xml

${project.basedir}/src/main

结束,