【发布时间】:2012-08-25 15:26:13
【问题描述】:
我正在使用IntelliJ 11.1.3、IvyIDEA Plugin for IntelliJ、Spock 0.5(取决于Groovy 1.8.4)和Groovy 1.5.6。
我有一个 Maven Standard Directory Layout 之后的 IntelliJ 模块。输出是一个 WAR 文件。
在 IntelliJ 中构建此模块时,有什么方法可以告诉 IntelliJ 使用以下内容:
-
Groovy 1.5.6编译src/main/groovy -
Groovy 1.8.4编译src/test/groovy
我需要这样做,因为实际的应用程序代码需要针对 Groovy 1.5.6 进行编译(长话短说:生成的 WAR 部署有一个 EAR,现在必须保留在 Groovy 1.5.6 上)。
当然,Test 目录不会与 WAR 一起部署。 Test 目录包含 Spock 测试。我正在使用 Spock 0.5,它需要 Groovy 1.8.x
ivy.xml
<dependency conf="compile->default" name="groovy-all"
org="org.codehaus.groovy" rev="1.5.6"/>
<dependency conf="test->default" name="groovy-all"
org="org.codehaus.groovy" rev="1.8.4"/>
<dependency conf="test->default" name="spock-core"
org="org.spockframework" rev="0.5-groovy-1.8"/>
我需要能够从 IntelliJ 运行测试。如果我从 IntelliJ 构建并尝试运行 Spock 测试,我会得到以下结果:
org.spockframework.runtime.InvalidSpecException:
Specification 'org.myorg.test.ProcessCaseTest' was not compiled properly
(Spock AST transform was not run); try to do a clean build
at org.spockframework.runtime.SpecUtil.checkIsSpec(SpecUtil.java:53)
如果我删除这一行:
<dependency conf="compile->default" name="groovy-all"
org="org.codehaus.groovy" rev="1.5.6"/>
然后我可以构建和运行 Spock 测试,但是我从我的模块中丢失了 Groovy。
我认为我需要做的是告诉 IntelliJ 使用一个版本的 Groovy 来编译应用程序代码,并使用另一个版本的 Groovy 来编译测试,但是我还没有找到一种方法来做到这一点。
如果有人能提供任何帮助或见解,我将不胜感激。非常感谢。
【问题讨论】:
标签: java groovy intellij-idea ivy spock