首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我必须为我的库构建fat jar吗?

我必须为我的库构建fat jar吗?
EN

Stack Overflow用户
提问于 2021-09-23 06:48:51
回答 1查看 65关注 0票数 0

目前,我正在制作一个库,并尝试将其导入到我们的项目中。该库包含诸如Exposed之类的库。

下面的代码是库的build.gradle.kts

代码语言:javascript
复制
plugins {
    kotlin("jvm")
}

val exposedVersion: String by project
dependencies {
    implementation(kotlin("stdlib"))
    implementation(kotlin("stdlib-jdk8"))
    implementation(kotlin("test"))
    implementation(kotlin("test-junit"))
    implementation(kotlin("reflect"))

    implementation(kotlin("script-runtime"))
    implementation(kotlin("script-util"))
    implementation(kotlin("scripting-jsr223"))
    implementation("org.slf4j", "slf4j-api", "1.7.30")

    implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
    implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion")
    implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
    implementation("org.jetbrains.exposed:exposed-java-time:$exposedVersion")
}

但是,当构建JAR并将其添加到项目中时,它会抛出一个错误(NoClassDefFoundError),指出它找不到JAR引用的类,比如Exposed。

由于上面的错误,就像下面的代码一样,我必须将我从库中添加的所有库添加回项目中。

代码语言:javascript
复制
val exposedVersion: String by project
dependencies {
    // spring
    implementation("org.springframework.boot:spring-boot-starter")
    
    /** other dependencies */
    // Dependencies for `my library jar`
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
    implementation(kotlin("script-runtime"))
    implementation(kotlin("scripting-jsr223"))
    implementation("org.jetbrains.exposed:exposed-core:$exposedVersion")
    implementation("org.jetbrains.exposed:exposed-dao:$exposedVersion")
    implementation("org.jetbrains.exposed:exposed-jdbc:$exposedVersion")
    implementation("org.jetbrains.exposed:exposed-java-time:$exposedVersion")

}

我想要的build.gradle.kts如下。

代码语言:javascript
复制
val exposedVersion: String by project
dependencies {
    // spring
    implementation("org.springframework.boot:spring-boot-starter")
    
    /** other dependencies */
    // Dependencies for `my library jar`
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
}

我怎么才能做我想做的事?我一定要做肥罐子吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-23 06:54:31

我看到您正在使用spring boot,所以最直接的方法是使用Spring Boot Gradle Plugin,当在项目中配置它时,您可以运行任务bootJar,然后就会创建一个完整的spring boot jar。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69295171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档