我使用以下命令构建ktor项目:gradle shadowJar --no-daemon
,但是它没有将我的资源文件夹添加到fat jar中。
我的构建。Gradle是这样的:
val ktor_version = "2.0.2"
val kotlin_version = "1.6.10"
val logback_version = "1.2.11"
plugins {
application
kotlin("jvm") version "1.6.10"
id("com.github.johnrengelman.shadow") version "7.1.2"
}
group = "com.cstcompany"
version = "0.0.1"
application {
mainClass.set("com.cstcompany.ApplicationKt")
val isDevelopment: Boolean = project.ext.has("development")
applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
}
repositories {
mavenCentral()
maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
}
dependencies {
implementation("io.ktor:ktor-server-core-jvm:$ktor_version")
implementation("io.ktor:ktor-server-netty-jvm:$ktor_version")
implementation("ch.qos.logback:logback-classic:$logback_version")
testImplementation("io.ktor:ktor-server-tests-jvm:$ktor_version")
testImplementation("org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version")
//FreeMarker
implementation("io.ktor:ktor-server-freemarker:$ktor_version")
}
在IntelliJ我的代码工作,但当我把它部署到一个fat jar时,它不会在我的资源文件夹中找到我的文件。
为了使相同的url既适用于Jar也适用于本地,url(或路径)需要是来自存储库根的相对路径。
. .意思是,你的文件或文件夹的位置从你的src
文件夹。
could be "/main/resources/your-folder/" or "/client/notes/somefile.md"
无论它是什么,为了让JAR文件找到它,url必须是从存储库根目录的相对路径。
it must be "src/main/resources/your-folder/" or "src/client/notes/somefile.md"
现在你得到了钻头,幸运的是Intellij Idea用户,你可以得到正确的路径与a right-click on the folder or file -> copy Path/Reference.. -> Path From Repository Root (this is it)
最后,粘贴并做你的事情。