我正在構建一個依賴于一些小型庫的輕量級 API 客戶端。我需要把它打包成一個罐子分發給客戶。我正在使用 IntelliJ、Gradle、Kotlin 生態系統。
Gradle 提供了構建 Jar 的任務,但它不包含依賴項,因此對我來說毫無用處。構建源 依賴項不是比僅源更常見嗎?為什么沒有這樣的任務?似乎我的大多數谷歌搜索都指向我自己撰寫的 Gradle 任務,這些任務將依賴關系捆綁在一起。
或者對于圖書館的構建方式是否有不同的做法?
uj5u.com熱心網友回復:
我假設有問題的 JAR 通過您對client的使用是私有的。
社區有一個插件經常被推薦:https ://imperceptiblethoughts.com/shadow/
Gradle 還提供了一個插件來創建 fat/uber JAR,但更適合應用程式,因此得名:Application plugin。-- 稍后會詳細介紹
如果您打算將您正在創建的 API 客戶端 JAR 用于其他客戶端的構建工具(例如 Maven 或 Gradle),那么您不應該創建胖 JAR 而是記錄它以便客戶端包含您的 API 客戶端 JAR,它們將需要提供 X、Y、Z 依賴項作為其構建程序的一部分。您還需要傳達您支持的最低或最高支持版本。這使客戶可以靈活地從他們想要的任何地方提供 X、Y、Z 依賴項。這就是Java 插件jar提供的任務發揮作用的地方。
但是,如果您不希望客戶端覆寫您的客戶端使用的內部依賴項的版本,那么是的,您將需要構建一個胖 JAR,其中包含 Shadow 插件(上面鏈接)發揮作用的那些依賴項。
現在回到應用程式插件,在下面,它應用了分發插件,它提供了創建胖 JAR 的能力。但是,由于我不知道的原因,這并不常用,相反,您會發現前面提到的 Shadow 插件更常用。這可能是因為 Shadow 插件對如何將依賴項打包到胖 JAR 中(例如重定位包)提供了更多控制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/441963.html
上一篇:應用程式需要Flutter中的Multidex支持?
下一篇:AndroidStudio中的Gradle錯誤:找不到“com.android.tools.build:gradle:7.1.1”。
