- 模組化
- 第三方套件依賴
- 客製化部署
以上為本篇三個重點
Maven module 的功能在編譯部署後,能夠自動把各模組封裝成 jar 如下圖
然後前端項目也可與這些 jar 做切割獨立成 war
大家各自獨立各自內部模組化開發測試
將來有錢有閒想重構也只需各模組內自行重構編譯好此模組替換 jar 就好
一般來說以敝人的習慣專案目錄會依業務項目來分
Maven Project
|_________module1(報表)
|_________module2(登入登出)
...
|_________Web(前端)
所以其實好處多多R~不是說只靠 package 不夠,而是多一層來分不是更好嗎?
當然有囉孩子,像寫 ios 有 cocoa pods 一樣
寫 Web App 當然也有,我相信任何應用程式應該都會有這種懶人套件管理...
Maven 的靈魂 pom.xml 就可以加入這些第三方套件的設定
平常會依設定去把這些套件放到 m2 資料夾並在預編譯時指過去用
要匯出 war 時才會真的幫你拉出放在 lib 如上圖
自此之後你不用再自己建立 lib 管理了,至少在專案移動上方便許多
只要這台電腦已經有 m2 資料夾就會幫你指過去
即使沒這 libary,pom 檔也會自己幫你抓好抓滿XDDD
當然關於其他相關 libary 依賴設定,settings.xml
還有自己建立 repository server 放自己的函式庫以後碰到就慢慢說了...
舉個例子,開發時我們可能 log4j.properties 會全開,這樣看比較爽(誤)
但實際上部署上去 server 會有自己的 log4j.properties 因為比較穩定了不需要看這麼多
那包版時可以不要包出來嗎?答案是可以的,只要在萬能的 pom 檔寫一寫就好
下圖是另一種功能,包出來的 war 檔名字已先命名好,不會錯亂
<profile>
<id>dev</id>
<properties>
<rp.build.warname>DL_dev</rp.build.warname>
</properties>
<build>
<finalName>${rp.build.warname}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.6</version>
<configuration>
<warName>${rp.build.warname}</warName>
</configuration>
</plugin>
</plugins>
</build>
</profile>
客製化部署算 Maven 蠻 op 的功能,小弟也只略知 12 待下篇實作時再來講一下...
其實 maven 還有版號控管,甚至能與 Jenkins 合作排程部署發布,各種詭異用法超多
未來若在專案上有碰到會再持續整理
以上是個人淺見,有錯還請不吝指教