所以我有基于多项目的 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
设置.gradle
include 'app'
构建.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"
}
}
应用程序/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'
主应用.kt
class MainApp {
companion object {
@JvmStatic
fun main(args: Array<String>) {
javaClass.getResource("test.txt") // this gives null
}
}
}