You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ktor应用打包fatJar/ShadowJar未包含资源目录问题求助

Ktor FatJar 不包含resources目录的解决方法

问题

开发Ktor应用时,尝试用Ktor内置的fatJar任务或Shadow插件的shadowJar任务打包fatJar,但生成的Jar包里完全找不到resources目录的资源文件,用7zip查看也看不到相关内容。

当前build.gradle.kts配置:

val ktor_version: String by project
val kotlin_version: String by project
val logback_version: String by project

plugins {
    kotlin("jvm") version "1.9.24"
    id("io.ktor.plugin") version "2.3.11"
    id("com.github.johnrengelman.shadow") version "8.1.1"
}

group = "dev.bluemethyst.web"
version = "0.0.2"

application {
    mainClass.set("dev.bluemethyst.kassword.ApplicationKt")

    val isDevelopment: Boolean = project.ext.has("development")
    applicationDefaultJvmArgs = listOf("-Dio.ktor.development=$isDevelopment")
}

repositories {
    mavenCentral()
}

dependencies {
    implementation("io.ktor:ktor-server-core:$ktor_version")
    implementation("io.ktor:ktor-server-netty:$ktor_version")
    implementation("io.ktor:ktor-client-core:$ktor_version")
    implementation("io.ktor:ktor-client-apache:$ktor_version")
    implementation("ch.qos.logback:logback-classic:$logback_version")
    implementation("com.google.code.gson:gson:2.11.0")
}

ktor {
    fatJar {
        archiveFileName.set("fat.jar")
    }
}

sourceSets {
    main {
        resources {
            srcDir("src/main/resources")
            include("**/*")
            include("static/html/*")
        }
    }
}

解决方法

问题出在sourceSets的资源配置上:

  • 移除冗余的资源目录配置:Gradle默认已经将src/main/resources识别为main源码集的资源目录,重复设置srcDir("src/main/resources")会干扰默认逻辑,导致资源未被正确打包。
  • 简化include规则:include("**/*")已经包含所有资源文件,额外的include("static/html/*")属于重复配置,无需保留。

你可以直接删除整个sourceSets块(默认配置已满足需求),或者修改为以下简化版本:

sourceSets {
    main {
        resources {
            include("**/*")
        }
    }
}

验证步骤

  1. 执行./gradlew clean processResources,检查build/resources/main目录下是否存在你的资源文件,确认资源被正确处理。
  2. 执行打包任务:./gradlew clean fatJar(Ktor内置任务)或./gradlew clean shadowJar(Shadow插件任务)。
  3. 打开build/libs下生成的Jar包,确认resources目录的文件已被包含。

内容的提问来源于stack exchange,提问作者Caleb

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 10:28:25