以往項目部署時, 項目的相關配置文件會在服務器上的部署腳本中被替換, 這樣導致的問題是: 服務器上的配置文件缺少維護, 並不能被開發人員及時看到,因此在部署時因爲配置文件導致的問題頻發.
我們希望在編譯打包的過程中,將對應的配置文件導入到相應的位置,這樣服務器就僅需要做好部署的工作就可以了.
下面以web 項目爲例
項目下面的env 目錄存放環境變量(僅web項目)
dev 代表本地開發環境
qa 代表測試服務器環境
product代表生產服務器環境
具體配置文件如何存放應該根據項目的不同而區別對待
resources 中的配置文件最終被編譯打包後放在 WEB-INF/classes中
webinfo 中的配置文件最終被編譯打包後在 WEB-INF中
下面介紹一下 maven的 profiles
Web項目的pom 中有這麼一段
這段的意思是 不同的profiles參數會設定不同的變量值
既 package.env=dev/qa/product
這個標籤代表省缺情況下 使用dev
Ok,這樣寫完後 就可以根據mvn的profiles 參數而設定了package.env的值
package.env變量的值將在下面這個插件: maven-war-plugins 中使用
Ok <directory> 設定源路徑 <targetPath>設置目標路徑
該插件在編譯時將會把<directory> 中的文件導入到<targetPath> 中去
下面來介紹 maven 的幾種常用命令以及 profiles的用法
mvn clean 清理項目生產的臨時文件,一般是模塊下的target目錄
mvn compile 在target目錄下編譯生成class
mvn package 在 target 目錄下打包生成 jar/war等
mvn install 安裝到maven倉庫中
mvn test 測試命令,或執行src/test/java/下junit的測試用例. (目前沒有用到)
profiles 使用時 只需要在上述命令後面 加上 -P[profiles],例如
如果你的操作系統是windows ,並且maven安裝配置正確
在CMD中將當前目錄移至pom.xml所存在的目錄下:
mvn package –Pdev 就可以就將該項目 打包到targert 中並且使用了profiles= dev
在這裏 mvn package = mvn package –Pdev
Eclipse 中 pom 上 右鍵run as -> maven build
還有一個問題需要解決就是maven 的目錄結構
上面是maven默認的目錄結構
但是我們的項目並沒有完全遵守,比如
這樣導致的結果是編譯出錯,這就需要藉助下面兩個插件:
maven-resources-plugin
有了這個插件我們就可以在 build 標籤下添加需要加入的resources目錄
build-helper-maven-plugin
這個插件可以增加源文件的目錄
打包的其他方法:
使用 一個parent 項目讓其他項目作爲他的module ,
pom如下
注意 packaging 的值是pom
他使用了 modules 標籤將其他的項目作爲自己的模塊
爲他執行install 就會自動根據依賴順序進行打包,可以參考:
http://juvenshun.iteye.com/blog/305865