需求:idea上搭建maven項目 MainModule,MainModule依賴ModuleA和 ModuleB,ModuleB依賴ModuleA.
ModuleA 和ModuleB中只有serve層到數據庫層的文件,即這兩個模塊的maven項目,只有src/main/java文件夾。
方式一,MainModule引用ModuleA和ModuleB的jar形式:即將ModuleA和ModuleB編譯後的jar包編譯到MainModule的lib文件中。運行項目的時候MainModule會走ModuleA和ModuleB的源碼,MainModule勾選自動編譯或者手動編譯MainModule,修改ModuleA和ModuleB的代碼後,會即時生效。
步驟:
1.導入maven項目:MainModule如圖:
2.MainModule(pom.xml)如下圖:
3.如圖引maven項目:ModuleA和ModuleB
4.ModuleA(pom.xml):
5.ModuleB(pom.xml)如下圖:
6.查看MainModule是否依賴ModuleA和ModuleB這兩個項目:
說明:
這種方式,項目MainModule加入ModuleA和ModuleB會自動依賴源碼。
方式二,MainModule引用ModuleA和ModuleB的源碼形式。:即將ModuleA和ModuleB源碼編譯後輸出到MainModule的編譯路徑下面。
步驟:
1.導入maven項目MainModule
2.MainModule(pom.xml)如下圖:ModuleA和ModuleB.jar範圍爲:provided(表示運行時,不會將包放進lib裏面)
3.如圖引入maven項目:ModuleA和ModuleB
4.ModuleA(pom.xml):
5.ModuleB(pom.xml):
6.設置MainModule
說明:
這種方式,項目MainModule直接運行的是ModuleA和ModuleB源碼而不是jia包。
方式三:使用pom.xml 的
<parent></parent>
標籤。以後補齊
總結:
不同點:
方式一:build artifacts後,moduleA和moduleB以jar的形式存在MainModule編譯後的的lib文件夾下面。
方式二:build artifacts後,moduleA和moduleB以源碼的形式存在MainModule編譯後MainModule\target\MainModule\WEB-INF\classes文件夾的下面。
相同點:
MainModule的自動編譯或者手動編譯後,修改moduleA和moduleB的代碼,會即時生效。