[英]Infer dependencies in Gradle subproject from its parent project
我目前在我的 Gradle 項目中有 3 個子項目,結構如下:
Main Project
|
-- Project A
-- Project B
-- Common Src
Project A 依賴於 Lib A 和 Common Src,Project B 依賴於 Lib B 和 Common Src。 Lib A 和 Lib B 包含相同類的不同實現。
我對 Common Src 項目的計划是容納所有實用程序類,這必然取決於 Lib A 和 Lib B。
有沒有辦法設置它,我的 gradle 項目應該是什么樣子?
我創建了一個與 Forge(項目 A)和 Fabric(項目 B)modloader 兼容的 Minecraft mod。 我在兩個項目中都有實用程序類,它們具有相同的源代碼但需要編譯兩次,每次都有不同的依賴項。 我不想每次要更改 Utility 類中的某些內容時都必須編寫兩次代碼。
編輯:我找到了一種解決方法:
Project A
和Project B
中,在各自的build.gradle
中添加一個任務,將源文件從Common Src
復制到每個項目的構建目錄。Project A
和Project B
的sourceSets
以包含我們剛剛復制到的構建文件夾中的源文件Common Src
配置為 gradle 子項目,並將Lib A
(或Lib B
)添加到Common Src
的依賴項中(只是為了讓 IntelliJ 獲得一些上下文)這可能是您正在尋找的:
在“共享”項目(/模塊)構建腳本中,對您希望子項目繼承的每個依賴項使用“ api ”而不是“實現”。 示例:(科特林 DSL)
dependencies {
api("org.jetbrains.kotlinx", "kotlinx-coroutines-core", "1.6.4")
...
}
然后,像這樣使項目 A 和項目 B 從該共享項目“繼承”
dependencies {
implementation(project(":shared")) // "shared" is your "utility" prject
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.