Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Gradle和Groovy/Spock测试Java6库或应用程序_Java_Gradle_Groovy_Spock - Fatal编程技术网

使用Gradle和Groovy/Spock测试Java6库或应用程序

使用Gradle和Groovy/Spock测试Java6库或应用程序,java,gradle,groovy,spock,Java,Gradle,Groovy,Spock,我有一个Java库,由Gradle2.4构建,它将被一些Java 6、Java 7、Java 8和Groovy 2.x应用程序使用。因此,为了尽可能向后兼容,我编写的lib既有sourceCompatibility又有targetCompatibility的1.6: build.gradle ============ apply plugin: 'java' apply plugin: 'groovy' sourceCompatibility = '1.6' targetCompatibili

我有一个Java库,由Gradle2.4构建,它将被一些Java 6、Java 7、Java 8和Groovy 2.x应用程序使用。因此,为了尽可能向后兼容,我编写的lib既有
sourceCompatibility
又有
targetCompatibility
1.6

build.gradle
============
apply plugin: 'java'
apply plugin: 'groovy'

sourceCompatibility = '1.6'
targetCompatibility = '1.6'

repositories {
    mavenCentral()
    jcenter()
}

dependencies {
    compile (
        'org.slf4j:slf4j-api:1.7.12'
    )

    testCompile (
        'org.codehaus.groovy:groovy-all:2.4.6'
        ,'org.spockframework:spock-core:1.0-groovy-2.4'
    )
}
但是,我没有理由不能用Groovy/Spock编写单元测试。只要Groovy不是main/compile/runtime类路径的一部分,那么我就可以自由地用任何JVM语言编写测试!我选择Groovy/Spock

问题是,我以前从未做过这样的事。我想我需要将Groovy All和Spock添加到
testCompile
类路径中,但是我不确定是否需要应用Groovy插件以及任何其他配置

再次:

  • 主编译/运行时类路径必须是无Groovy的,并且必须与Java1.6兼容
  • 测试编译/运行时类路径可以包含我喜欢的任何内容

关于我需要在上面做哪些具体更改,您有什么想法吗?

如果您希望Gradle编译任何Groovy,无论是主源代码还是测试源代码,您都需要应用
Groovy
Gradle插件。也就是说,只要您不构建胖jar(即,一个jar库,它本身包含依赖库,因此可以作为独立应用程序运行),那么您就不应该在运行时类路径上与Groovy有任何联系。您将希望将Spock/Groovy添加到testCompile依赖项中,这是正确的,并且只要您将它们的作用域保持在testCompile,即使创建胖JAR也不应该将它们包含在主编译类路径、最终构建的工件中,或者在运行时必须包含在类路径上


另一方面,在Gradle中,您还可以修改任何和所有依赖项的配置。有关这方面的更多信息,请查看Gradle文档。

谢谢@alexanerific(+1)-请查看我编辑的
构建。Gradle
-您现在觉得正确吗?再次感谢!我觉得不错。您可能需要注意的一件事是使用Groovy 2.3+。描述使用高于2.3的groovy版本可能需要Java 1.7最低版本的情况。这不会影响Java1.6的运行时需求,但可能会在构建时影响源代码的兼容性。如果您只是将Groovy用于Spock,那么应该能够使用Groovy 2.2和Spock 1.0-Groovy-2.0。值得深思。如果你对这些都满意,介意接受我的回答吗?非常感谢,测试愉快。