2015-11-17 48 views
1

我試圖讓我的Java應用程序模塊化,以便將有客戶端必須擁有的核心基本模塊,但是他/她將能夠添加額外的功能/插件,或隨着她的需要延伸。就像NetBeans這樣的IDE如何去做。如何使用Maven運行多個模塊項目

這是我已經努力在多大程度上實現這個使用Maven:


我通過發出以下命令Maven的定位自己在工作區目錄和創建主(或父項目)啓動:

mvn archetype:create -DgroupId=com.byteslounge.main -DartifactId=com-byteslounge-main 

現在你我刪除了src文件夾,因爲它不會被使用。在此之後,我編輯我的pom.xml文件並將jar更改爲pom。

創建主項目後,我創建了主庫模塊。這是用戶將下載並通過添加其他模塊來添加擴展。從主項目目錄,我發出以下Maven命令:

mvn archetype:create -DgroupId=com.byteslounge.jar -DartifactId=com-byteslounge-jar 

現在我創建通過發出以下命令第一模塊:

mvn archetype:create -DgroupId=com.byteslounge.lib -DartifactId=com-byteslounge-lib 

這個模塊也可以稱爲每當主程序, com-byteslounge-jar,上面被調用。

如何在maven中編譯項目,以便在運行com-byteslounge-jar時調用所有模塊?


PS:

這是去這個問題,考慮到我以後需要由具有此的ServiceLoader Class在這個項目中實現完全自動化的最佳方式。我打算在客戶端PC中有一個名爲modules/plugins的子目錄,其中任何插件應用程序將被包含爲.jar文件。當用戶啓動應用程序時,主模塊(com-byteslounge-jar)將在最終的單個程序中包含這些其他插件。

+1

https://books.sonatype.com/mvnex-book/reference/multimodule.html的目錄結構 –

回答

1

擴展@ jan-doerrenhaus在評論中提供的鏈接。

你的頂層POM應該引用兩個子文件夾,使用這樣的「模塊」:

<modules> 
    <module>com-byteslounge-jar</module> 
    <module>com-byteslounge-lib</module> 
</modules> 

然後,您需要從頂層目錄生成項目。 Maven會自動計算依賴性順序,以正確的順序編譯項目。

很難從您的問題中知道,但是您可能會在錯誤的目錄中創建子項目 - 您應該爲每個子項目創建一個文件夾,然後在子目錄中運行mvn archetype:create。你應該有它看起來像這樣

com-byteslounge-jar/ 
com-byteslounge-jar/pom.xml 
com-byteslounge-lib/ 
com-byteslounge-lib/pom.xml 
pom.xml 
相關問題