2017-03-02 75 views
0

最近我開始使用Maven更有效地管理我的項目結構。但是,由於我同時學習JAVA,所以我陷入了一個死衚衕,MAVEN中的模塊和JAVA包之間的區別是什麼?Maven:差異模塊 - java包

由於包被用於組的類/接口共享共同的目的: (來源:docs.oracle)

定義包是相關類型的提供訪問保護和名字空間管理的分組。

,我無法找到一個模塊的明確定義,比模糊的更好表示: (來源:http://docs.jboss.org/tools/latest/en/maven_reference/html/creating_a_maven_application.html

一個Maven模塊是一個子項目

從我閱讀的內容來看,我們應該創建模塊,以分離項目,業務,領域中的邏輯,基本上任何被視爲獨立實體的東西。

因此,爲什麼我們不能使用包來做同樣的事情?目的不一樣嗎?

我也在這裏取消所有的構建配置。如果它是唯一的區別,那麼請提供論證什麼時候應該使用哪一個。

+1

你可能不希望混合你的Java應用程序和Web應用程序的構建,即使它們通過一些中間API相關。這最好將項目分成2個子項目。並且maven爲你做的很好 – Adonis

+0

然後他們在概念上做同樣的事情,maven的唯一區別或者更確切的目的在於物理構建配置屬性? –

回答

1

Maven是一個捆綁工具,它將軟件的可重用部分組合到應用程序中,無論它是Java代碼,圖像資源還是HTML模板。它構建您的應用程序,以便它可以在特定環境(本地,測試,生產等)中運行或部署。所有這些與Java程序包無關。

如果您(或其他人)想要重新使用您編寫的代碼,那麼您應該關心Maven模塊。例如,您編寫了一個轉換貨幣的Web應用程序,現在您想在另一個應用程序中使用轉換邏輯(但不是Web前端)。在這種情況下,您需要爲Web前端創建一個模塊,併爲業務邏輯創建一個模塊。

+0

模塊是一個類的集合。包是類的集合。如果我可以在特定的軟件包中打包業務邏輯所需的所有類,那麼將它們打包到模塊中有什麼區別?我發現重用它們的利潤沒有任何差別。你能詳細說明一下嗎? –

+0

以擁有身份管理服務器和API的大型公司爲例進行訪問。此外,在不同的團隊中開發了幾個應用程序,例如,編輯人員使用的內容管理系統,銷售人員使用的客戶關係管理等等。所有這些應用程序都需要與身份管理服務器通信,以通過API對用戶進行身份驗證。該API將是所有應用程序可能依賴的典型Maven模塊。 – Matt

+0

在第一個使用Web應用程序和劃分前端/後端模塊的場景中,我想最終創建一個具有業務邏輯的jar可以立即用於任何其他可以使用它的項目中?因此它不需要關心重新編譯代碼?也許我的疑惑來自於這樣一個事實,即我迄今寫過的所有簡單程序都可以簡單地複製1/2類的代碼。我的想法是否正確? –

0

包是一個類的集合。模塊是具有構建配置的包的集合。

如果是你自己的項目,你可以組織它們,但是你想要使用包和/或模塊。如果你想爲多個項目創建一個可重用的組件(例如庫),你應該使用一個模塊。

如果您只有軟件包,項目將不得不爲所需的每個庫直接包含所有軟件包(即源文件)。取而代之的是模塊(記住它也有構建配置),你可以將編譯後的輸出(例如.jar,.aar等)包含在你的項目中。