У меня есть проект весенней загрузки, в котором есть несколько модулей, каждый из которых имеет свой собственный файл 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?