这个问题来自Netbeans v8.0.1的注释 .
这个问题现在至关重要,因为我开始使用Spock进行Java测试,因为它基于Groovy .
我喜欢Spock,我更喜欢使用Netbeans中的 same Groovy版本,因为我在Gradle和命令行中使用它 .
此外,我正在使用sdkman这意味着“工作”Groovy版本可以交换,具体取决于我需要处理哪个项目或哪个版本的软件包 . 总之,我希望Netbeans能够......
- current Groovy版本
现在 ...
$ groovy -version
Groovy Version: 2.4.7 JVM: 1.8.0_102 Vendor: Oracle Corporation OS: Linux
$
$ gradle -version
------------------------------------------------------------
Gradle 3.1
------------------------------------------------------------
Build time: 2016-09-19 10:53:53 UTC
Revision: 13f38ba699afd86d7cdc4ed8fd7dd3960c0b1f97
Groovy: 2.4.7
Ant: Apache Ant(TM) version 1.9.6 compiled on June 29 2015
JVM: 1.8.0_102 (Oracle Corporation 25.102-b14)
OS: Linux 4.4.0-36-generic amd64
当Groovy和 Gradle project 在命令行上运行时......
$ gradle build
Starting a Gradle Daemon (subsequent builds will be faster)
Gradle version: 3.1
Groovy version: 2.4.7
Java version: 1.8.0_102
:compileJava
:compileGroovy
...
在Netbeans中运行相同的Gradle build.gradle
项目:
Executing: gradle build
Arguments: [-u]
Gradle version: 3.1
Groovy version: 2.4.4
Java version: 1.8.0_102
:compileJava UP-TO-DATE
:compileGroovy UP-TO-DATE
目前我不知道v2.4.4 Groovy来自哪里!虽然我正在制定一个令人不舒服的假设,我最后会说 .
对于Netbeans,似乎有两个不同的问题,我将分别介绍 . 我将首先考虑第二点,因为它可能会比我们意识到的更多地影响# 1 .
-
不一致的Groovy包装和支持
-
选择/使用特定Groovy平台或版本的配置方法无效 .
1.不一致的Groovy配置
记录的Groovy配置过程
-
建议似乎相信只需将Groovy库更改为最新的_824889就足够了
-
http://www.areaofthoughts.com/2011/11/upgrading-groovy-in-netbeans-ide-71.html
根据那里的相关问题/评论判断,这根本没有奏效......
-
一些谷歌搜索让你获得超过10,000次点击率
-
在第一页上有很多似乎是活跃的错误 .
一个神话...我一直在将这个片段添加到Groovy和Gradle脚本中
println "Gradle version: "+ gradle.gradleVersion;
println "Groovy version: "+ GroovySystem.version;
println "Java version: "+ System.getProperty("java.version");
在Windows和Linux上使用netbeans 8.2运行时的输出很奇怪 .
Groovy version: 2.1.3
Java version: 1.8.0_102
我在想v2.1.3是Netbeans附带的 groovy-all
JAR文件 - 我多么愚蠢:
Netbeans日志显示加载的Groovy模块是:
“Groovy 2.1.7”jar:nbinst://org.netbeans.modules.libs.groovy/modules/ext/groovy-all.jar!/
我检查了那个JAR,这个JAR文件报告了它的版本 2.4.5 :
$ java -jar /opt/dev/netbeans/home/groovy/modules/ext/groovy-all.jar -version
Groovy Version: 2.4.5 JVM: 1.8.0_102 Vendor: Oracle Corporation OS: Linux
Groovy v2.1.3
来自哪里?我也偶然发现了 . 我用当前的嵌入式groovy-all(v2.4.7)替换了捆绑的(并且在标签中用错误标记)v2.1.7 JAR文件 .
当我开始使用Netbeans 8.2时......我运行了我的Groovy主程序:
Gradle version: 3.1
Groovy version: 2.1.3
Java version: 1.8.0_102
Huh !没有区别......现在 . 查看Netbeans下Gradle构建的输出(也运行Groovy运行时......):
Executing: gradle build
Arguments: [-u]
Gradle version: 3.1
Groovy version: 2.4.4
Java version: 1.8.0_102
:compileJava UP-TO-DATE
:compileGroovy
总结; Netbeans似乎体现了以下Groovy运行时版本:
-
2.1.3
-
2.1.7
-
2.4.4
-
2.4.5
即使我已经 Build 了一个groovy库: groovy-all-2.4.7.jar 并将此JAR放入Netbeans Groovy模块区域:
/opt/dev/netbeans/home/groovy/modules/ext
groovy-all.jar
# After copying the embeddable/groovy-all-2.4.7.jar
# into Netbeans Groovy/modules ...
#
$ java -jar /opt/dev/netbeans/home/groovy/modules/ext/groovy-all.jar -version
Groovy Version: 2.4.7 JVM: 1.8.0_102 Vendor: Oracle Corporation OS: Linux
仍然没有脚本将Groovy版本报告为:2.4.7 .
错误引用 The Princess Bride ,“Groovy与Netbeans的整合......你似乎很多时候使用这个词 .
- “我认为你不知道这意味着什么 . ”
2.使用Netbeans进行Groovy打包
作为反击点;我找到了Gradle配置......这些语言/平台配置可以满足我的需求:
-
Gradle(合格)
-
Maven
-
Javascript
-
JRuby和Ruby
-
Java
在Netbeans环境中不能很好地工作的事情是:
-
斯卡拉
-
Gradle(未集成)
-
Groovy
-
Ant(是的)
为什么Netbeans不能在所有组件和活动中支持“Groovy平台”?!
Groovy的好例子是看Netbeans如何支持:
-
Java平台
-
Maven
-
Gradle - 虽然笨拙的imho,它的确有效
而Groovy似乎到处都是 . 显然,使用库功能是行不通的 .
我想要一些与Netbeans一致的Groovy语言操作 . 这意味着我需要摆弄Bundles并且变得肮脏,那么这可能是件好事,因为我所经历的是令人不满意的 .
假设:
IDEA,Eclipse和Netbeans正在使用OSGi进行组件组装 .
它看起来好像个别插件或简单构建包包含他们自己的Groovy包 .
对于不打算与项目或开发人员交互的东西,这可能是一件好事 .
从我的角度来看,我认为如果Groovy是一流语言会更好 . 所以在任何特定时间都只有一个Groovy版本 .
因此,像(例如)Gradle,Spock和Groovy脚本的基于groovy的工具是所有SAME Groovy运行时,同样的AST和不断 .
希望Stackoverflow集体有足够的洞察力来确定更好地发生事情的方法 .
1 回答
在项目节点上,右键单击并从菜单中选择“属性” . 选择“库”类别 . 在Compile选项卡中,您将在Compile-time Libraries下看到:“Groovy 2.1.7” . 选择它,然后单击“编辑” . 在Classath中选项卡,您将在Library Classpath下看到它引用NetBeans安装目录下的groovy-all.jar .
在/ usr / share / groovy的首选groovy安装中,我在embeddable / groovy-all.jar中找到了另一个jar文件 . 通过删除现有的库类路径并将其替换为此类路径,您可以使用Groovy 2.4.12编译项目 .