首页 文章

如何将最新的Groovy(2.4)与最新的Netbeans(8.2)集成?

提问于
浏览
1

这个问题来自Netbeans v8.0.1的注释 .

这个问题现在至关重要,因为我开始使用Spock进行Java测试,因为它基于Groovy .

我喜欢Spock,我更喜欢使用Netbeans中的 same Groovy版本,因为我在Gradle和命令行中使用它 .

此外,我正在使用sdkman这意味着“工作”Groovy版本可以交换,具体取决于我需要处理哪个项目或哪个版本的软件包 . 总之,我希望Netbeans能够......

现在 ...

$ 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和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 回答

  • 0

    在项目节点上,右键单击并从菜单中选择“属性” . 选择“库”类别 . 在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编译项目 .

相关问题