使用Gradle Kotlin DSL打包普通Jar


gradle 和 kotlin一直是我比較常用的組合方式,也算是稍微新一點都技術選型,國內相關使用資料並沒有maven的普遍,Gradle Kotlin DSL也都是一些外文資料,本篇介紹一下普通項目的打包配置。

官方文檔 https://docs.gradle.org/current/userguide/kotlin_dsl.html

在項目沒有引用springboot的情況下,是無法使用springboot為我們准備好的bootJar的,打包也需要自己配置

如果直接運行 gradle jar ,會發現打包成功,但是無法運行,只有一個空包,運行提示xxx.jar中沒有主清單屬性

image-20210509112708478

普通打包方式

我們在build.gradle.kts中為打包加上主清單,注意:使用kotlin需要在main方法所在文件名最后加上Kt

tasks.jar {
    // enabled = true
    manifest {
        attributes(mapOf("Main-Class" to "com.xx.xx.ci.MainKt"))
    }
}

繼續執行打包,運行后發現一些錯誤信息,大意是沒有將相關jar包打入當前包

image-20210509113644408

最終配置,這個配置不僅可以將當前程序的依賴打入jar,還能將依賴jar的依賴打入,也就實現了將嵌套依賴打入最終包中

tasks.jar {
    // enabled = true
    manifest {
        attributes(mapOf("Main-Class" to "com.xx.xx.ci.MainKt"))
    }
    from(configurations.runtimeClasspath.get().map {
        if (it.isDirectory) it else zipTree(it)
    })
    val sourcesMain = sourceSets.main.get()
    sourcesMain.allSource.forEach { println("add from sources: ${it.name}") }
    from(sourcesMain.output)
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM