gpt4 book ai didi

java - 智能 : Specifying different groovyc version for source and test within same module

转载 作者:行者123 更新时间:2023-11-29 05:55:44 25 4
gpt4 key购买 nike

我正在使用 IntelliJ 11.1.3IvyIDEA Plugin for IntelliJSpock 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 现在)。

当然,测试目录不会随 WAR 一起部署。测试目录包含 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 来编译测试,但我还没有找到一种方法来执行此操作。

我将非常感谢任何人可以提供的任何帮助或见解。非常感谢。

最佳答案

IDEA 遵循 Maven 依赖模型,其中 compile 依赖自动进入 test 类路径。您可以尝试对 IDEA 模块中的依赖项重新排序,以便 Groovy 1.8(其范围应为 test)出现在 Groovy 1.5(其范围应为compile)之前。无论如何,这是一件毛茸茸的事情。

PS:我推荐使用Spock 0.6。

关于java - 智能 : Specifying different groovyc version for source and test within same module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12204699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com