簡體   English   中英

我如何編譯一個多模塊Maven項目,其中一個模塊同時具有clojure和Java代碼

[英]How can I compile a multi-module maven project, where a module have both clojure and java code

我有一個多模塊Maven項目,其中一個模塊同時具有Java和Clojure代碼,Clojure代碼需要來自Java源的pojo,而Java源中的另一個類需要Clojure編譯后的代碼(我已經添加了:gen-class和project即使最初給出了一個錯誤,編譯也很好,因為當clojure-maven-plugin和compiles執行clojure:compile和compile時,無法看到Java類I。 但這在管理多個模塊的外部pom中不起作用。 感謝您尋找解決方案的幫助

正如評論之一所說,clojure-maven-plugin無法處理同一模塊中Java和Clojure代碼之間的循環依賴關系。 Java代碼在Clojure代碼之前進行編譯。

但是您可以重組代碼以消除循環依賴。 將Java + Clojure項目(Maven模塊)分成三個部分:

  • 基本Java模塊
  • Clojure模塊
  • 第二個Java模塊

基本Java模塊將至少包括Clojure模塊所需的POJO以及其他可能的常見事物。 Clojure模塊將包含所有Clojure代碼,第二Java模塊將包含Java代碼的一部分,該部分需要由Clojure編譯器生成的類。 僅Clojure模塊需要clojure-maven-plugin。

然后,您可以在這些模塊之間設置依賴性,例如:

  • Clojure模塊取決於Base Java工件
  • 第二個Java模塊取決於基礎Java和Clojure工件

只要在Clojure模塊中正確設置了AOT編譯,所有內容現在都應該編譯了。 我相信clojure-maven-plugin AOT默認會編譯所有名稱空間。 沒有AOT編譯, (gen-class)什么也做不了。

暫無
暫無

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

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