簡體   English   中英

如何將一個巨大的項目拆分成maven個模塊

[英]How to split a huge project into maven modules

我在 OSS 中有一個項目,由 20,000 行代碼和 300 個類組成。 此外,這些類分為兩個模塊:前端和后端。

最近出現了一個問題。 就是一個模塊里面的類很多,編譯時間長。 通過僅更改一行,Maven 將嘗試重建該模塊中的所有類。
為了解決這個問題,我想到了進一步划分成幾個模塊。

當前package配置如下:

.
|
|-FrontModule/
|
|-BackEndModule/
| |-com.example.package/
| | |-resolver/
| | | |-...
| | |-loader/
| | |-installer/
| | |-BackendDaemon.java

我們正在考慮將其重構如下:

.
|
|-FrontModule/
|
|-BackEndModule/
| |-com.example.package/
| | |-BackendDaemon.java
|-ResolverModule/
| |-...
|-LoaderModule/
| |-...
|-InstallerModule/
| |-...

目前,解析器、加載器和安裝器的代表性實例存儲在 BackendDaemon 的常量中。 安裝程序還使用 BackendDaemon 中的解析器實例進行操作。

在這種情況下,我相信將 package 重構為一個模塊將不可避免地導致某處相互依賴。

是否有任何方法或設計以某種方式將這個巨大的代碼拆分成模塊?

如果有人能回答我的問題,我將不勝感激。

另外,由於我是用翻譯器從日語翻譯過來的,所以如果有難以理解的表達方式或者沒有表達出來的地方,請告訴我。

謝謝你。

做到這一點的一個好方法是遵循所謂的洋蔥架構,例如參見https://dev.to/barrymcauley/onion-architecture-3fgl 基本思想是您的域/服務模塊位於 model 的核心。位於中心意味着它對其他模塊沒有任何依賴性。 在它周圍,您進入模塊的第一層,例如訪問數據庫,然后是具有與其他系統接口的另一層,最后是最后一層模塊中的用戶界面。 這個想法是你只建立指向內部的依賴關系,這樣你就可以防止依賴循環。

我不知道您的應用程序是關於什么的,但是按照您在問題中提出的內容,我會說您在核心有一個域模塊,然后在第二層有一個解析器。 下一層有您的加載程序和安裝程序。 你以前已經把最外層做成一個單獨的模塊了,就是前端模塊。

還要記住,您可以使用依賴倒置(著名的 SOLID 首字母縮寫詞 D)來確保您的依賴指向正確的方式。 因此,如果您的域模塊需要解析某些內容,它將使用域模塊中的“ResolverInterface”,該域模塊由解析器模塊內的 class 實現。 這樣,解析器模塊只存在對域模塊的依賴。 依賴倒置框架(Spring 是一個非常流行的框架)將確保“ResolverInterface”的實現在運行時通過自動裝配可用。

我覺得你應該再問一遍為什么要拆分項目,使用JRebel可以優化你的編譯時間。 否則使用 maven pom 父文件及其子模塊是一種方法。 甚至使用其他構建工具或帶有一些腳本的構建流程,但我建議不僅在 IDE 在概念上以某種方式組織您的項目,首先根據您的項目可擴展性和先決條件選擇一個體系結構。 和功能列表,然后計划如何逐步移動。

暫無
暫無

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

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