Tag: groovy

Groovy多行string有什么问题?

Groovy脚本产生了一个错误: def a = "test" + "test" + "test" 错误: No signature of method: java.lang.String.positive() is applicable for argument types: () values: [] 虽然这个脚本工作正常: def a = new String( "test" + "test" + "test" ) 为什么?

Groovy:获取目录中所有文件的列表(recursion)

新手问题: 我试图得到(不打印,这很容易)的目录中的文件列表,它是子目录。 我试过了: def folder = "C:\\DevEnv\\Projects\\Generic"; def baseDir = new File(folder); files = baseDir.listFiles(); 但是我只拿到钱。 我也试过了 def files = []; def processFileClosure = { println "working on ${it.canonicalPath}: " files.add (it.canonicalPath); } baseDir.eachFileRecurse(FileType.FILES, processFileClosure); 但在封闭范围内不能识别“文件”。 我如何获得列表?

Grails(现在)值得吗?

我知道这是重复的 ,然而,自从一年前问这个问题以来,Grails世界已经有了相当大的发展,就像Eclipse支持的IDE一样,所以请不要盲目地closures它。 我认为答案是肯定的,并且已经开始使用Grails 1.2.0开发一个新项目,并且调用了STS Eclipse Integration的Groovy / Grails部分。 我认为这个问题值得在Grails进化一年后重新审视,答案肯定是混合的。 所以,作为一个有经验的Java Web开发人员,我有这些问题,并希望我的假设受到挑战: Grails现在是否值得与Ruby相提并论? 它克服了它的越野车的开始? 这是否真的赋予了快速发展的好处? (我承认我现在正在挣扎,我已经超过了广泛的基线configuration,使我的定制应用程序不是列表和面向页面) 它是否适用于真实世界的生产应用程序? (感觉很重) Eclipse插件是否比它更好,适合用途? (我想还没有) 谢谢 编辑:我正在学习,因为我去,我有几个重要的抱怨生活与框架 – 而不是框架能力本身。 我join这些是因为我认为他们应该是考虑因素,是根据我的经验和意见,并可能帮助正在尝试决定是否去Grails的人。 我也可能performance出我对这个框架缺乏经验,所以这些都不是意味深长的批评。 我是一个有经验的开发人员,这是我发现的: debugging真的很难 。 其实这几乎是不可能的,特别是作为框架中的初学者,这是你最需要可靠debugging器的朋友。 我已经花费了更多的时间比我应该跟踪代码的某些部分的语法错误的问题来处理引起堆栈中某处的静默失败的域字段。 logging是非常可怕的 。 你有两种模式,“没有用的”和“无用的东西”。 我的debugging日志是单页请求后128Mb,并没有包含任何关于我的错误。 在我看来,整个伐木问题需要在框架内重新考虑。 STS Eclipse IDE具有边际价值 。 除语法高亮之外,它没有多大用处。 你不能debugging代码,所以它是一个荣耀的编辑器。 代码提示是不完整的,就我所知,根本没有GSP支持。 它也是我的桌面上最慢的Eclipse插件 – 启动大约2分钟。 这是令人震惊的缓慢。 我已经恢复到一个文本编辑器(你会注意到所有的在线教程video也是这样)和一些自定义的语法高亮。 我对演出有一些严重的担忧 。 有点言之过早,但我已经发现自己调整数据库,因为hibernate。 也许这是可以预料的,但我真的必须保持我的领域模型简单的约定,以产生性能的查询。 最后一个,约定你的逻辑域模型和你的物理数据库模型应该是相同的,这不是一个明智的默认,在现实世界中不太可能是这样。 我知道你们可以将两者分开,但是这会造成一定程度的复杂性,如果这些惯例被延长,我认为这是可以避免的。 关于构图的文档不足,以及在实践中需要做什么 。

我怎样才能将一个Gradle脚本导入到另一个?

我有一个复杂的gradle脚本,它在构build和部署一些netbeans项目到许多环境中都包含了大量的function。 这个脚本运行得非常好,但实质上它是通过六个地图来configuration的,这些地图包含项目和环境信息。 我想将任务抽象到另一个文件中,以便我可以简单地在一个简单的构build文件中定义我的地图,并从另一个文件中导入任务。 通过这种方式,我可以为许多项目使用相同的核心任务,并使用一组简单的地图来configuration这些项目。 任何人都可以告诉我如何可以导入一个gradle文件到另一个,以类似的方式ant的任务? 到目前为止,我已经对Gradle的文档进行了无情的扫描。 附加信息 在汤姆的回答下面,我想我会试图澄清我的意思。 基本上我有一个运行一些子项目的Gradle脚本。 然而,子项目都是Netbeans项目,并带有自己的ant build脚本,所以我有gradle中的任务来调用这些脚本。 我的问题是,我有一些configuration在文件的顶部,如: projects = [ [name:"MySubproject1", shortname: "sub1", env:"mainEnv", cvs_module="mod1"], [name:"MySubproject2", shortname: "sub2", env:"altEnv", cvs_module="mod2"] ] 然后我生成如下任务: projects.each({ task "checkout_$it.shortname" << { // Code to for example check module out from cvs using config from 'it'. } }) 我有许多这样的任务生成片段,它们都是通用的 – 它们完全依赖于项目列表中的configuration。 所以我想要的是把它放在一个单独的脚本中,并以下面的方式导入它: projects = [ […]

什么是“Groovy”和“Grails”以及使用它们构build什么types的应用程序?

现在我听到很多关于“Groovy on Grails”的内容,我想更多地了解它: 什么是Groovy? 什么是Grails? 在Grails上使用Groovy构build什么types的应用程序?

Gradle没有findtools.jar

我正在使用javadoc doclet和gradle,所以我需要使用包中的tools.jar,它位于jdk的lib文件夹(在我的例子中是1.6.0_26)。 关键是Gradle不会自动把它join,所以我把这个工具包添加到我的libs文件夹,然后把它添加到dependencies.gradle。 现在,我想直接从我的JDK家里进入我的dependencies.gradle。 有没有办法做到这一点? 我在我的dependencies.gradle中尝试了下一个: compile files("${System.properties['java.home']}/lib/tools.jar") 但在编译时找不到它。

如何检查groovy数组/哈希/集合/列表中的元素?

如何判断一个数组是否包含一个元素? 我认为可能会有像[1,2,3].includes(1)那样的评估为true

快捷方式创build从Groovy列表中的地图?

我想要一些这样的手段: Map rowToMap(row) { def rowMap = [:]; row.columns.each{ rowMap[it.name] = it.val } return rowMap; } 鉴于GDK的东西,我希望能够做到这样的事情: Map rowToMap(row) { row.columns.collectMap{ [it.name,it.val] } } 但我还没有看到任何文件…我错过了什么? 还是我太懒惰?

在Grails 2.0.0运行时生成的Clojure 1.2.1 / 1.3 / 1.4代理失败。 1.2.0很好

我正在Grails 2.0.0 (和2.1.0-SNAPSHOT)中扩展Grails Clojure插件 ,我想将其更新到Clojure 1.3.0并添加clojure.tools.logging 。 在clojure.tools.logging的日志stream函数中编译ByteArrayOutputStream的代理时 ,Clojure抛出exception: ClassCastException: clojure.asm.Type cannot be cast to clojure.lang.IFn ( https://gist.github.com/a6ae681c37091a3d2379 ) 我去了,并删除clojure.tools.logging并写了一个剥离代理 Object : (proxy [java.lang.Object] [] (toString [] "proxy's toString")) 还抛出了同样的ClassCastException和消息。 我试图打印代理的macroexpand-1 ,并得到同样的事情。 我回到了Clojure 1.2.0, 代理再次正常工作。 我尝试了1.4.0的一些化身,它们performance出与1.3.0相同的行为。 1.2.1也会抛出一些exception,但是我正在尝试打1.3.0,所以我没有花太多时间。 堆栈跟踪指向core_proxy.clj中generate-proxy的letforms之一中定义的gen-method函数。 我在那里添加了一些println的东西,看看能不能发现。 也许这下一个陈述将会泄露读者的一个巨大的误解,但只是添加这些println改变了编译时间的行为,我完全没有想到的方式。 即使所有mvn package的Clojuretesting都继续通过,exception位置和exceptiontypes也完全改变了。 例如,在开始生成字节码之前,只需要将一个println添加到gen-method,就可以抛出Clojure ClassCastException: clojure.lang.PersistentArrayMap cannot be cast to java.lang.Class ( https://gist.github.com/5a7a40929a6c4a104bd5 ) 我已经看到了各种其他的错误,取决于我把println (s)放在哪里,但这是最stream行的。 […]

build议停止Gradle构build的方法

如何在检测到问题后停止Gradle构build? 我可以使用一个断言,抛出一个exception,做一个System.exit(坏主意),或者在Gradle中使用一个专用的函数(但我找不到一个)。 什么是Gradle的最佳方式(以及为什么?)。