簡體   English   中英

我該如何構建一個依賴於另一個的Gradle項目,但將本地路徑置於版本控制之外?

[英]How can I build a Gradle project that depends on another, but keep local paths out of version control?

我正在組織我的兩個Java項目。 兩者都使用Git進行版本控制。 為了構建它們,我從調用javac簡單shell腳本遷移到Gradle。 項目C取決於項目L。項目C的build.gradle如何從項目L中找到所需的內容? 我想避免檢查計算機本地的版本控制路徑。 我覺得我必須缺少一種比以下方法更好的解決方案:

  • build.gradle Project L的源路徑添加到Project C的源路徑:這是本地路徑。
  • 將Project L發布到本地存儲庫,並讓Project C從該存儲庫獲取依賴項:我再次指定本地路徑; 本地存儲庫的路徑。
  • 在服務器上運行遠程存儲庫:我確實有一個服務器和一個域,但這似乎有些過分。
  • 在項目C中包含項目L的.jar:或者我正在將二進制文件放入版本控制中(這是我不想做的),或者是在構建過程中手動傳送.jar文件。

有什么好的解決方案?

使用Project C下的Git將Project L設置為子模塊。然后讓Project C將Project L視為庫/預編譯的庫。 這里的一個注意事項是確保您永遠不要修改子模塊中的代碼! 如果需要更改,請確保在單獨的項目中進行更改。 否則將使您頭痛。

Gradle可以使用本地Maven存儲庫。 它甚至使用與Maven相同的機制來確定.m2文件夾的位置。

如果在settings.xml中定義了本地存儲庫位置,則將使用此位置。 USER_HOME/.m2的settings.xml優先於M2_HOME/conf的settings.xml。 如果沒有settings.xml可用,則Gradle使用默認位置USER_HOME/.m2/repository

只要將ProjectL工件發布到本地Maven,就可以在不使用本地路徑的情況下從ProjectC的存儲庫中使用它們。 只需確保在C之前構建並發布L。有關發布到Maven倉庫的更多詳細信息, 請參見此處

可以在gradle中將本地Maven存儲庫定義為:

repositories {
  mavenLocal()
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM