Tag: groovy

Gradle:使用项目类路径执行Groovy交互式shell

我有一个由几个子项目组成的Gradle项目。 我刚刚创建了一个新的,以添加对我想要运行的交互式Groovy shell的支持: gradle console 要么 gradle console:run 所以我的新console模块的build.gradle文件如下: apply plugin: ‘groovy’ apply plugin:’application’ mainClassName = ‘org.codehaus.groovy.tools.shell.Main’ dependencies { compile ‘org.codehaus.groovy:groovy-all:2.2.2’ compile ‘org.fusesource.jansi:jansi:1.11’ compile ‘commons-cli:commons-cli:1.2’ compile ‘jline:jline:2.11’ compile project(‘:my-module’) } task(console, dependsOn: ‘classes’, type: JavaExec) { main = ‘org.codehaus.groovy.tools.shell.Main’ classpath = sourceSets.main.runtimeClasspath } 但是,当我运行gradle :console:run或gradle console我得到类似的东西: :console:run Groovy Shell (2.2.2, JVM: 1.6.0_45) Type ‘help’ or […]

如何使用gradle。 Java和Groovy在一起?

我试图在IntelliJ 13中使用Gradle项目,但我一直遇到以下问题: Java文件无法看到Groovy文件 IntelliJ似乎忘记了Groovy,并提示我为它配置GDK 我读到groovy插件允许Groovy和Java在混合自己的源路径中,但Java想要它自己的。 所以我有以下目录结构: SRC \主\常规 SRC \主\ java中 SRC \测试\常规 我有Java和Groovy类的混合 这是我的build.gradle: apply plugin: ‘java’ apply plugin: ‘groovy’ apply plugin: ‘eclipse’ apply plugin: ‘idea’ apply plugin: ‘spring-boot’ apply plugin: ‘jacoco’ apply plugin: ‘war’ buildscript { repositories { maven { url “http://repo.spring.io/libs-snapshot” } mavenLocal() } dependencies { classpath(“org.springframework.boot:spring-boot-gradle-plugin:1.0.0.RC4”) } } jar { baseName […]

如何通过任务在gradle中设置环境变量?

我有gradle应用程序。 我的主要gradle文件包含一些任务(groovy)。 我需要在启动我的任务时 – 环境变量“LANG”设置encoding = ru_RU.koi8-r(对于windows,linux),并在完成我的任务后 – 环境变量包含初始值(en_US.UTF-8) 。 怎么样? 请帮帮我。

在Groovy中使用递归嵌套映射合并映射

我想知道是否有人可以轻松地将2个深嵌套地图合并在一起? 例如,我想得到: [ “a” : “1”, “animals” : [“cat” : “blue”] ] + [ “b” : 2, “animals” : [“dog” : “red”] ] == [ “a” : 1, “b” : 2, “animals” : [ “cat” : “blue”, “dog” : “red”] ] 有人有简单的解决方案吗?

反复出现的事件逻辑

我正在开发一个Groovy / Java日历类型的应用程序,允许用户输入具有开始日期和可选重复的事件。 如果它是一个反复出现的事件,它可能会重现: 每月与对应于开始日期的月份日期 每周一周,对应于开始日期 对应于开始日期的每周的每两周一次 等等 我最初计划使用Google日历API来执行所有重复逻辑,但事实certificate这是一个巨大的PITA,因为如果有人关心我会进一步讨论。 所以现在,我决定推出自己的解决方案。 给定一个日期,我想弄清楚在这个日期是否发生了重复发生的事件。 我的逻辑(伪代码)如下: public boolean occursOnDate(def date, def event) { def firstDate = event.startDate if (firstDate > date) { return false; } else if (event.isWeekly()) { return event.dayOfWeek() == date.dayOfWeek() } else if (event.isMonthly()) { return event.dayOfMonth() == date.dayOfMonth() } else { // At this point […]

使用Maven运行spockunit testing

在之前的项目中,我使用Spock测试框架对我的Java代码进行unit testing。 我发现这非常有效,所以我试图将Spock测试添加到我当前的项目中,该项目使用Maven作为其构建工具(之前的项目使用了Gradle)。 虽然我可以让Maven编译我的Spock测试(使用groovy-eclipse-compiler ),但我无法让Maven运行测试。 我做了一个简单的例子来演示我的2个文件的问题: pom.xml src/test/java/ASpec.groovy pom.xml内容: 4.0.0 my.group my-artifact 0.1-SNAPSHOT junit junit 4.10 org.codehaus.groovy groovy-all 2.0.8 test org.spockframework spock-core 0.7-groovy-2.0 test org.apache.maven.plugins maven-compiler-plugin 3.1 groovy-eclipse-compiler org.codehaus.groovy groovy-eclipse-compiler 2.8.0-01 org.codehaus.groovy groovy-eclipse-batch 2.1.8-01 ASpec.groovy内容: import spock.lang.Specification class ASpec extends Specification { def “Test A”(){ // Always fail expect: false } } 当我执行mvn clean test […]

如何在Groovy中创建XPath函数

我正在尝试在Groovy中创建一个执行以下操作的函数: 在运行时接受2个参数(一串XML和一个xpath查询) 以文本forms返回结果 这可能非常简单,但有两个障碍: 这必须在groovy中完成 我对Groovy或Java几乎一无所知…… 这是我通过黑客攻击各种代码而得到的,但现在我被卡住了: import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.xpath.*; builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); doc = builder.parse(new ByteArrayInputStream(xml.bytes)); expr = XPathFactory.newInstance().newXPath().compile(expression); Object result = expr.evaluate(doc, XPathConstants.NODESET) 其中“xml”和“expression”是运行时参数。 我现在如何得到这个结果(作为字符串)? 谢谢

用Java模拟鸭子打字

问题:我希望能够在Java中一般性地访问Java ojbect上的任何属性/字段,类似于动态语言(想想Groovy,JavaScript)的方式。 我不知道当时我正在编写这个管道代码它是什么类型的对象或属性/字段名称是什么。 但是当我去使用它时我会知道属性/字段名称。 我目前的解决方案:到目前为止,我已经编写了一个简单的包装类,它使用java.beans.Introspector来获取Bean / POJO的属性并将它们公开为Map 。 它很粗糙但适用于简单的情况。 我的问题是除了reflection/转换为Map之外还有哪些方法可以解决这个问题? 在我走得太远之前,我想知道是否有人知道我如何能够从Rhino或javax.script.*蚕食一些东西javax.script.*这个概念已经过深思熟虑。 或者也许是一种我没有考虑过的完全不同的方法。 编辑:是的我熟悉reflection(我相信Introspector无论如何都在使用它)。 如果有任何其他经过深思熟虑的解决方案,我只是好奇。 编辑2:似乎最流行的答案涉及1)直接或通过辅助类进行reflection,和/或2)映射到实现所需类成员的接口。 关于利用Groovy的评论,我真的很感兴趣。 由于Groovy具有真正的duck-typing并且它是一种JVM语言,有没有办法在Groovy中创建一个简单的帮助器并从Java调用它? 这将非常酷,可能更灵活,性能更好。 答:我认为迈克的答案是最好的,因为它是一个最接近的完整概念。 对于这种特殊情况,我可能不会采用这种方式,但它肯定是一种有用的方法。 任何看过这个的人都应该确保在这里阅读对话,因为那里有很多有用的信息。 谢谢!

与Java的断言不同,Groovy是否对生产代码提出了一个好主意?

在Java中,已知使用assert关键字通常是一个坏主意,因为它的行为依赖于运行时环境(默认情况下它不会执行任何操作,除非将-enableassertion传递给java运行时)。 Groovy的主张是不同的吗? 它总是在生产代码中执行,是否建议在生产代码中使用? (在Java中你会使用像Preconditions这样的东西) 从我的健全性测试来看,似乎默认情况下assert没有任何标志的情况下运行良好,并且它实际上比Java关键字更强大(参见Power Assert ) – 我只是在寻找官方/完整的答案,而不是我的轶事一。

使用java在LINUX中执行命令并获取输出

我正在使用Groovy在我的LINUX盒子上执行命令并取回输出,但我无法使用| 以某种方式管道(我认为)或者可能是它没有等待命令完成,出了什么问题,或者我的代码中缺少什么? 我的通话function def test() { String result=”N” HashMap params = IntermediateResults.get(“userparams”) Map env=AppContext.get(AppCtxProperties.environmentVariables) def fClass = new GroovyClassLoader().parseClass( new File( ‘plugins/infa9/Infa9CommandExecUtil.groovy’ ) ) List frows=[“uname -a”, “uname -a | awk ‘{print\$2}'”, “uname -a | cut -d ‘ ‘ -f 2”] List resultRows = fClass.newInstance().fetchCommandOutput( params, env, frows ) return result } Infa9CommandExecUtil.groovy文件内容更新添加了exitVal println package […]