如何用 maven 同時 install jar 和 war

環境:

jdk 1.6

maven 3.0.3

 

背景:

項目在一個super pom下,有多個平行module,在各級依賴中,有一個module 在 pom 中定義 package war,但是開發階段,只需要其中的jar包來使用。如果一直使用其 war 包來開發調試,maven overlay 會佔用較多時間。

於是新的需求就是:將這個module 同時打包 jar 和 war 並 intall 到本地 repository 中。開發階段就用jar,部署用war。

 

解決思路

使用 maven-jar-plugin ,定義在 phase package 階段同步打 jar 包;

然後在 maven install 時,maven 會將這個 module 的 jar、war、ear、pom 等install到本地repository (此動作是自動完成,有幾個就install 幾個,無需配置)

 

具體操作:

在pom中加入 maven-jar-plugin 2.3.1

 

其中要注意的是,聲明 classifier 爲任何你需要的字符。


因爲這樣可以避免一個問題:

如果在 pom 中定義 package 爲 war,

運行 maven package 後,在項目 target 目錄下成功產生 XX.jar 和 XX.war ,

但運行 maven install,卻只把 XX.jar 安裝到 repositoy 中的  XX.war,其中內容僅是 jar 包內容。

而XX.war 就不install 到 repositoy 了。

 

加入 classifier 後產生: XX-api.jar 和 XX.war,

那麼maven install 會將這兩個文件同時安裝到本地 repository 中,不會產生上述問題。

 

後記:

同樣的道理,如果項目定義 package jar,同時需要打包 jar 和 war,應該也可以搭配使用 maven-war-plugin 來達成。


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章