我正在嘗試將 Gradle 多項目存儲庫作為 git 子模塊導入到另一個 Gradle 項目中。這是多項目存儲庫的結構:MyLibrary- lib-api - api-config - api-repository- lib-impl - impl-config - impl-repository在 Gradle 項目中MyLibrary,有幾個模塊依賴于該項目中的其他模塊。例如,lib-api:api-repository具有以下依賴關系:implementation project(':lib-api:api-config')(下面的模塊lib-impl還包含各自的 api 作為依賴項)到目前為止一切正常,我可以構建、運行和測試lib-impl.現在我嘗試將項目導入到另一個項目中我用來git submodule add添加MyLibrary到MyProject. 這是現在的結構:MyProject- MyLibrary - lib-api - api-config - api-repository - lib-impl - impl-config - impl-repository- api- impl為了能夠使用 下的模塊MyLibrary,我將settings.gradle文件編輯MyProject為如下所示:rootProject.name = 'MyProject'include 'api'include 'impl'include 'mylibrary'include 'mylibrary:lib-api'include 'mylibrary:lib-impl'include 'mylibrary:lib-api:api-config'include 'mylibrary:lib-api:api-repository'include 'mylibrary:lib-impl:impl-config'include 'mylibrary:lib-impl:impl-repository'問題現在,下面的模塊MyLibrary屬于根項目MyProject,其中的所有內部依賴項都MyLibrary需要以 為前綴:mylibrary。但這僅適用于MyLibrary當前是另一個項目的子模塊的情況。為了構建MyProject,我需要更改內部的依賴關系MyLibrary:implementation project(':lib-api:api-config')implementation project(':lib-api:api-repository')對此:implementation project(':mylibrary:lib-api:api-config')implementation project(':mylibrary:lib-api:api-repository')但是,:mylibrary不需要存在即可MyLibrary自行成功編譯(即,如果MyLibrary是根項目)。MyLibrary但要作為子模塊工作,需要進行此更改。這曾經不是一個大問題,因為我總是可以拉出子模塊MyLibrary并編輯必要的build.gradle文件。MyLibrary然而,我現在開始嘗試設置持續集成,每當我嘗試構建時,我都會收到有關這些導入在內部無效的錯誤,MyProject因為 CI 總是直接從 git 存儲庫獲取代碼。我覺得如果以下聲明是有效的,它可以解決我的問題:implementation project(':mylibrary:lib-api:api-config').ifNotPresent(':lib-api:api-config')預先感謝您的任何幫助
1 回答

幕布斯7119047
TA貢獻1794條經驗 獲得超8個贊
經過一次精彩的發現后,我意識到文件中允許使用 java 代碼build.gradle,所以我很自然地這樣做了:
dependencies {
if (rootProject.getName().equals("MyLibrary")) {
implementation project(':lib-api:api-config')
} else {
implementation project(':mylibrary:lib-api:api-config')
}
}
添加回答
舉報
0/150
提交
取消