Gradle - Зависимости между тестовыми каталогами - PullRequest
0 голосов
/ 14 мая 2019

В моем проекте gradle есть test / groovy и test / kotlin

Как мне сказать, что при компиляции и выполнении теста классы в test / groovy зависят от классов в test / kotlin?

Пример проекта: build.gradle

plugins {
    id 'groovy'
    id 'java'
    id 'org.jetbrains.kotlin.jvm' version '1.3.31'
}

group 'test'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.5.1'
    testCompile group: 'org.spockframework', name: 'spock-core', version:     "1.3-RC1-groovy-2.5"
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

compileKotlin {
    kotlinOptions.jvmTarget = "1.8"
}
compileTestKotlin {
    kotlinOptions.jvmTarget = "1.8"
}

Класс Groovy в src / test / groovy:

import spock.lang.Specification

class SomeSpec extends Specification {
    def test1(){
        when:
        def c = new SomeClass()
        then:
        1 == 1
    }
}

Kotlin класс в src / test / kotlin

class SomeClass {
}

Я вижу, что kotlin скомпилирован до Groovy, но сборка все равно не удалась:

> Task :assemble UP-TO-DATE
> Task :compileTestKotlin UP-TO-DATE
> Task :compileTestJava NO-SOURCE

> Task :compileTestGroovy FAILED
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.codehaus.groovy.vmplugin.v7.Java7$1     (file:/C:/Users/User/.gradle/caches/modules-2/files-    2.1/org.codehaus.groovy/groovy/2.5.4/86b94e2949bcff3a13b7ad200e4c5299b52ad994/groovy-2.5.4.jar) to constructor     java.lang.invoke.MethodHandles$Lookup(java.lang.Class,int)
WARNING: Please consider reporting this to the maintainers of     org.codehaus.groovy.vmplugin.v7.Java7$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal         reflective access operations
WARNING: All illegal access operations will be denied in a future release
 startup failed:
C:\work\test-gradle\src\test\groovy\SomeSpec.groovy: 6: unable to resolve     class SomeClass 
 @ line 6, column 17.
           def c = new SomeClass()
               ^

1 error

1 Ответ

1 голос
/ 14 мая 2019

Я решил это, добавив

 compileTestGroovy.classpath += files(compileTestKotlin.destinationDir)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...