[Maven]建立一個 Maven 專案(一)前言

  • 模組化
  • 第三方套件依賴
  • 客製化部署

以上為本篇三個重點

為什麼一個專案需要模組化?一個 project 可以細分很多 package 難道還不夠嗎?

Maven module 的功能在編譯部署後,能夠自動把各模組封裝成 jar 如下圖

然後前端項目也可與這些 jar 做切割獨立成 war

大家各自獨立各自內部模組化開發測試

將來有錢有閒想重構也只需各模組內自行重構編譯好此模組替換 jar 就好

一般來說以敝人的習慣專案目錄會依業務項目來分

Maven Project

           |_________module1(報表)

           |_________module2(登入登出)

           ...

           |_________Web(前端)

所以其實好處多多R~不是說只靠 package 不夠,而是多一層來分不是更好嗎?

第三方函式庫好多好煩啊~每次要用新的 jar 就要上網去抓,難道沒有一個快速的方式管理嗎?

當然有囉孩子,像寫 ios 有 cocoa pods  一樣

寫 Web App 當然也有,我相信任何應用程式應該都會有這種懶人套件管理...

Maven 的靈魂 pom.xml 就可以加入這些第三方套件的設定

平常會依設定去把這些套件放到 m2 資料夾並在預編譯時指過去用

要匯出 war 時才會真的幫你拉出放在 lib 如上圖

自此之後你不用再自己建立 lib 管理了,至少在專案移動上方便許多

只要這台電腦已經有 m2 資料夾就會幫你指過去

即使沒這 libary,pom 檔也會自己幫你抓好抓滿XDDD

當然關於其他相關 libary 依賴設定,settings.xml

還有自己建立 repository server 放自己的函式庫以後碰到就慢慢說了...

每次要部署時就搞得我好亂啊,dev 有 dev 的玩法,sit 有 sit 的玩法,一下要包一下不要包搞得我好亂

舉個例子,開發時我們可能 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 合作排程部署發布,各種詭異用法超多

未來若在專案上有碰到會再持續整理

以上是個人淺見,有錯還請不吝指教