亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 gradle + spring boot 1.5 構建子模塊的可執行 jar

如何使用 gradle + spring boot 1.5 構建子模塊的可執行 jar

桃花長相依 2021-06-21 09:10:35
我有一個多模塊項目:Root project 'platform'+--- Project ':api'+--- Project ':common'在:common模塊中,我包含了所有的依賴項,在:api模塊中,我只有apply(plugin = "org.springframework.boot")dependencies {  implement(project(":common"))}問題是,當我構建:api模塊時,從 jar 文件中我看不到 jar 文件中的任何依賴項,BOOT-INF/libs/只有BOOT-INF/classes/. 當我使用 java -jar 運行 jar 時,它為:common模塊中的一個類顯示 NoClassFound 。gradle :api:bootRun 工作良好。我應該做任何其他配置嗎?我正在使用 gradle 4.9 kotlin dsl 和 spring boot 插件 1.5.15.RELEASE
查看完整描述

2 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

原因是spring boot 1.5 gradle plugin只針對gradle 2 & 3,不支持implementation配置(gradle 4引入)。


基于此文檔,它描述了在默認情況下只compile和runtime配置都包括在內。話雖如此,可以包含自定義配置以使其工作。


如果您查看此處圖示的gradle 5 的 gradle 配置層次結構,它runtimeClasspath是實現的根,因此具有可運行 jar 所需的所有依賴項。


這意味著對于 spring boot 1.5,您可以將其指向自定義配置以使其正確構建可運行的 jar:


構建.gradle:


bootRepackage {

    customConfiguration = 'runtimeClasspath'

}

build.gradle.kts:


import org.springframework.boot.gradle.repackage.RepackageTask


// more of the build file


tasks {

    "bootRepackage"(RepackageTask::class) {

        setCustomConfiguration("runtimeClasspath")

    }

}


查看完整回答
反對 回復 2021-06-23
?
料青山看我應如是

TA貢獻1772條經驗 獲得超8個贊

原來這是因為 spring-boot-plugin 1.5.x 不知何故無法識別implement(project(:common)),通過更改compile(project(:common))它可以正常工作。


查看完整回答
反對 回復 2021-06-23
  • 2 回答
  • 0 關注
  • 261 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號