【发布时间】:2016-10-14 14:34:05
【问题描述】:
这个问题来自针对 Netbeans v8.0.1 的注释。
自从我开始使用Spock 进行 Java 测试以来,这个问题现在很关键,因为它是基于 Groovy 的。
我喜欢Spock,我更喜欢使用相同Groovy 版本在 Netbeans,就像我在Gradle 和命令行中使用一样。
另外,我正在使用sdkman,这意味着“工作”Groovy 版本可以根据我需要处理的项目或包的哪个版本进行交换。简而言之,我希望 Netbeans 与 ...
- 当前 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 项目 在命令行上运行时...
$ 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 配置过程
- Advice 似乎认为只需将 Groovy 库更改为最新的
groovy-all.jar就足够了 - http://www.areaofthoughts.com/2011/11/upgrading-groovy-in-netbeans-ide-71.html
- https://netbeans.org/features/groovy/
从相关问题/cmets 那里来看,这根本不是很好用...
- How to use Groovy 2.0 in netbeans
- 一点谷歌搜索让您获得超过 10,000 次点击和
- 首页上有不少似乎是活跃的错误。
一个 mythbuster ...我一直在将这个 sn-p 添加到 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
嗯!没有区别......现在。查看 Netbeans 下 Gradle build 的输出(它也运行 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
即使我已经建立了一个 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。
mis-引用 公主新娘,“与 Netbeans 的完美集成......你似乎经常使用这个词。 p>
- “我想你不知道这意味着什么。”
2. 使用 Netbeans 进行 Groovy 打包
作为反点;我找到了 Gradle 配置...这些语言/平台配置可以满足我的需求:
- Gradle(合格)
- 马文
- Javascript
- JRuby 和 Ruby
- Java
在 Netbeans 环境中不能正常工作的事情是:
- 斯卡拉
- Gradle(未集成)
- 时髦的
- 蚂蚁(是的)
为什么 Netbeans 不能跨所有组件和活动支持“Groovy 平台”?!
Groovy 的好例子是看看 Netbeans 是如何支持的:
- Java 平台
- 马文
- Gradle - 虽然笨拙,恕我直言,它可以工作
而 Groovy 似乎无处不在。显然,库功能的使用不起作用。
我想要一些与 Netbeans 一致的 Groovy 语言操作。这意味着我需要摆弄 Bundles 并变得肮脏,这可能是一件好事,因为我所经历的并不令人满意。
假设:
IDEA、Eclipse 和 Netbeans 正在使用 OSGi 进行组件组装。
在我看来,单个插件或简单的构建包都包含它们自己的 Groovy 包。
对于不打算与项目或开发人员进行交互的事物来说,这可能是一件好事。
从我的角度来看,我认为如果 Groovy 是一门一流的语言会更好。因此,在任何特定时间都只有一个 Groovy 版本。
因此,Gradle、Spock 和 Groovy 脚本等基于 groovy 的工具都是相同的 Groovy 运行时、相同的 AST 等等。
希望 Stackoverflow 集体有足够的洞察力来确定让事情发生得更好的方法。
【问题讨论】: