Kotlin исходные файлы в "src / main / kotlin" не могут разрешать другие классы модуля gradle - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть многомодульный проект с Gradle, который сейчас работает нормально. Теперь я начал проводить рефакторинг своего старого java кода и использовал для него некоторые kotlin классы. К сожалению, у меня есть проблема разрешения зависимостей с этим подходом.

Поэтому я заверил, что зависимость :domain правильно разрешена с помощью gradle. Он работает со всеми исходными файлами в src/main/java, если они являются. java файлами. Однако при использовании в src/main/kotlin они не разрешают. Это верно только для зависимостей модуля проекта. Внешние библиотеки работают в обеих структурах папок. Помещение моих файлов .kt в src/main/java также не работает.

Так что это файл gradle.build.kts неисправного модуля:

group = "com.my.company"

plugins {
    kotlin("jvm")
}
tasks.compileKotlin {
    kotlinOptions {
        jvmTarget = "11"
    }
}
tasks.compileTestKotlin {
    kotlinOptions {
        jvmTarget = "11"
    }
}

dependencies {
    implementation(kotlin("stdlib"))
    implementation(project(":domain"))
    implementation("org.json:json")
    implementation("commons-io:commons-io")
}

И это build.gradle.kts из :domain модуль:

plugins {
    id("org.openrepose.gradle.plugins.jaxb") version "2.5.0"
}

group = "com.my.company"

tasks.checkstyleMain {
    exclude("**/gen/**")
}
dependencies {
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.springframework.boot:spring-boot-starter-batch")
    implementation("org.hsqldb:hsqldb")
    implementation("org.springframework:spring-oxm")
    implementation("org.apache.commons:commons-lang3")
    implementation("org.json:json")

    implementation("org.springframework.boot:spring-boot-starter-json")

    annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
    implementation("org.springframework.boot:spring-boot-starter-amqp")
    implementation("org.springframework.boot:spring-boot-starter-batch")
    implementation("com.fasterxml.jackson.core:jackson-databind")
    implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
    implementation("javax.annotation:javax.annotation-api")
    implementation("org.apache.commons:commons-text")
    implementation("commons-io:commons-io")
    implementation("org.springframework.cloud:spring-cloud-gcp-starter-logging")
    implementation("org.springframework.cloud:spring-cloud-gcp-starter-trace")

    implementation("javax.activation:activation")
    implementation("javax.xml.bind:jaxb-api")
    implementation("com.sun.xml.bind:jaxb-impl")
    implementation("org.springframework.cloud:spring-cloud-stream")

    testImplementation("org.springframework.boot:spring-boot-starter-test")
    testImplementation("org.springframework.amqp:spring-rabbit-test")
    testImplementation("org.springframework.amqp:spring-rabbit-junit")

    jaxb("com.sun.xml.bind:jaxb-xjc")
    jaxb("com.sun.xml.bind:jaxb-impl")
    jaxb("javax.xml.bind:jaxb-api")
    jaxb("javax.activation:activation")
}

sourceSets {
    main {
        java {
            srcDirs("src/gen/java")
        }
    }
}

jaxb {
    bindingsDir = "src/main/resources/bindings"
    bindings = listOf("bindings.xjb")
    xsdDir = "src/main/resources/xsd"

    xjc {
        accessExternalSchema = "file"
        generateEpisodeFiles = false
        destinationDir = "src/gen/java"
    }
}

tasks.clean {
    delete("src/gen")
}

tasks.compileJava {
    dependsOn("xjc")
}

Понятия не имею, почему он не работает. Может быть, это jaxb генератор плагин может вызвать некоторые проблемы здесь? Просто предположение.

РЕДАКТИРОВАТЬ : root gradle.build.kts: https://pastebin.com/nNTx1fKe

1 Ответ

0 голосов
/ 06 февраля 2020

Обязательно примените плагин Kotlin JVM к модулю :domain. Обратите внимание, что kotlin("jvm") version "1.3.61" в вашем root gradle.build.kts не применяется к подпроектам! Вы должны иметь что-то вроде:

subprojects {
    apply<KotlinPlatformJvmPlugin>()

    tasks {
        withType<KotlinCompile> {
            kotlinOptions.jvmTarget = "11"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...