因此,我有一个基于多项目的Grandle构建,其中使用Kotlin作为主要语言。假设默认项目名为app
,它同时具有src/main/kotlin
和src/main/resources
目录。最棘手的是,即使Gradle将其设置为正确的代码,我也无法从代码中访问资源。我将其与单项目构建(以src
作为主要源目录的构建)进行比较,并在运行时进行了比较:
javaClass.getResource("./")
两个项目都指向位于build/classes/kotlin/main/
的同一目录。但是当我跑步时:
javaClass.getResource("test.txt")
单个项目指向build/resources/test.txt
(这与预期的一样),但是在多项目构建的null
中得到app
。当然文件在两个地方都存在
我是否错过了全局build.gradle
或项目的build.gradle
或其他项目中的某些配置?
项目结构和一些重要的文件部分:
+ app
| + src
| | + main
| | | + kotlin
| | | | - Main.kt
| | | + resources
| | | | - test.txt
| - build.gradle
- build.gradle
- settings.gradle
settings.gradle
include 'app'
build.gradle
plugins {
id 'org.jetbrains.kotlin.jvm' version '1.3.72'
}
version '0.0.1'
subprojects {
apply plugin: 'java'
apply plugin: 'org.jetbrains.kotlin.jvm''
repositories {
mavenCentral()
jcenter()
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib"
compile "org.reactfx:reactfx:1.4.1"
}
}
app / build.gradle
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.9'
}
dependencies {
compile "org.jetbrains.kotlin:kotlin-reflect:1.3.72"
testCompile group: 'junit', name: 'junit', version: '4.12'
}
javafx {
version = "11"
modules = ['javafx.controls', 'javafx.graphics', 'javafx.fxml']
}
mainClassName = 'MainApp.MainApp'
MainApp.kt
class MainApp {
companion object {
@JvmStatic
fun main(args: Array<String>) {
javaClass.getResource("test.txt") // this gives null
}
}
}