Gradle не в состоянии построить в тесте - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть проект весенней загрузки, в котором есть несколько модулей, каждый из которых имеет свой собственный файл Gradle.

Версия весенней загрузки: 1.5.2.RELEASE

Версия Gradle: 3,4

  • сервер (который включает в себя основной класс) и другие конфигурации
  • shared (классы служебных программ, используемые другими модулями)
  • service (модуль с различными хранилищем и службами)
  • транзакция (модуль, который обрабатывает транзакцию) Мне нужно написать тест для проекта, но я не могу изменить структуру проекта. Я создал тест в своем модуле транзакций.

Родительский файл gradle таков:

description = "mohen project $version"

defaultTasks "clean", "build"

buildscript {

    repositories {
        mavenLocal()
        jcenter()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath "io.spring.gradle:dependency-management-plugin:${dependencyManagementPluginVersion}"
    }
}


apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'

subprojects {

    configurations {
        querydslapt
    }

    apply plugin: 'java'
    apply plugin: 'org.springframework.boot'

    sourceCompatibility = javaVersion
    targetCompatibility = javaVersion

    repositories {
        mavenLocal()
        jcenter()

        maven {
            url "http://repo.spring.io/snapshot"
        }
        maven {
            url "http://repo.spring.io/milestone"
        }
    }
    dependencies {
        testCompile "org.springframework.boot:spring-boot-starter-test",
                "com.h2database:h2",
                "org.springframework.restdocs:spring-restdocs-mockmvc",
                "org.hamcrest:hamcrest-all:$hamcrestVersion",
                "org.powermock:powermock-api-mockito:1.7.3",
                "org.mockito:mockito-all:$mockitoVersion"
        testCompile group: 'org.powermock', name: 'powermock-module-junit4', version: '1.7.3'
        testCompile group: 'org.powermock', name: 'powermock-module-junit4-rule-agent', version: '1.7.3'

        compile "org.springframework.boot:spring-boot-starter-web",
                "org.springframework.boot:spring-boot-starter-data-jpa",
                "org.springframework.boot:spring-boot-starter-security",
                "org.springframework.ws:spring-ws-core:$wsReleaseVerison",
                "org.springframework.boot:spring-boot-devtools",
                "org.springframework.data:spring-data-redis:$redisVersion"
    }

    sourceSets {
        test {
            java {
                srcDir "${projectDir}/src/test/java"
            }
            resources {
                srcDir "${projectDir}/src/test/resources"
            }
        }

        generated {
            java {
                srcDirs = ['src/main/generated']
            }
        }
    }


    bootRepackage {
        mainClass = 'com.mohen.amatya.Application'
    }

}


task wrapper(type: org.gradle.api.tasks.wrapper.Wrapper) {
    gradleVersion = '3.4'
}

idea {
    module {
        downloadJavadoc = true
        downloadSources = true
        sourceDirs += file('src/main/generated')
    }
}

, а файл gradle подпроектов как таковой. Ниже приведен файл build.gradle для модулей транзакций.

jar {
    enabled = true
}
bootRepackage{
    enabled = false
}
dependencies {

    compile project(':service')
    compile project(':shared')

    testCompile project(':service').sourceSets.test.output
    testCompile project(':shared').sourceSets.test.output

}

Служба зависит от общего ресурса, а общий ресурс не имеет файла build.gradle.

Я добавил в bootRepackage значение false, поскольку не было bootJar для этой версии Gradle. Тесты запускают файл нормально, или когда я это делаю.

./gradlew clean :transaction:compileTestJava

Но когда я собираю его нормально, используя чистую сборку. Тест не пройден с ошибками типа:

невозможно найти символ

ошибка: пакет com.mohen.amatya.shared.rest.user.schema не существует

Я новичок в gradle и многомодульном, так что я не понимаю, что не так? Я добавил тестовый srcDirs в sourceSet родительского файла Gradle, как это было предложено в других публикациях. По какой причине я получаю ошибки на compileTest Java?

...