一直用Maven作項目構建,Maven用起來比Ant要方便,起初為了不想在ant的構建指令碼上多花精力,選擇了Maven,但是後來實踐證明,選擇是
正確的,那麼是不是把時間精力省下來了呢,事實證明我並沒有因為選擇了Maven而節省下多少時間,在構建構建工具多花時間精力是值得的,但Maven給
我的回報遠遠超出我的預期。
Maven能做什嗎?基本上Ant能做的Maven都能作,且很多地方做得更好。為什麼這麼說呢,不講理論了,用事實證明!。
Struts2,WebWork2,Spring2,Appfuse2等比較有分量的項目都能看到Maven的身影。另他最大的特點是其依賴包管理系統,
這個觀念不是新觀念了,Debian/Ubuntu,Ruby-Gems都採用類似的思想來管理依賴包/庫。
熟悉了Maven2的項目設定檔後,可以不寫一行構建指令碼,僅僅十幾行按部就班的依賴包配置,就可以完成一個完整web項目的編譯,測試,打包,清理等任務,但如果想要Maven做得更多,follow me...
先從一個最簡單的web項目開始,假定這個項目名稱就叫做myweb,JDK1.5以上,Linux系統(XP上使用方法是一樣的,只不過XP的cmd太爛了,沒有Linux的console好用,或者我太菜,用不來XP高深的cmd命令列介面)。
1) 安裝Maven,安裝過程略,簡單的說就跟你裝ant一樣,官方網站http://maven.apache.org
2) 建立項目骨架,開一個Linux的console命令列視窗,輸入以下命令:
java 代碼
- mvn archetype:create /
- -DgroupId=com.mycompany.webapp /
- -DartifactId=myweb /
- -DarchetypeArtifactId=maven-archetype-webapp
簡單解釋一下:
archetype 是一個內建外掛程式,他的create任務將建立項目骨架
archetypeArtifactId 項目骨架的類型
可用項目骨架有:
* maven-archetype-archetype
* maven-archetype-j2ee-simple
* maven-archetype-mojo
* maven-archetype-portlet
* maven-archetype-profiles (currently under development)
* maven-archetype-quickstart
* maven-archetype-simple (currently under development)
* maven-archetype-site
* maven-archetype-site-simple, and
* maven-archetype-webapp
groupId 項目的java包結構,可修改
artifactId 項目的名稱,產生的項目目錄也是這個名字,可修改
在目前的目錄下會產生一個myweb檔案夾,這個檔案就是我們的專案檔夾了
3) 補全項目的目錄結構,因為產生的項目骨架是個webapp最小化骨架結構,與Maven的標準項目布局還有差距,
Maven標準項目布局結構見http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html
其實就是要自己手動建立幾個目錄而已,下面一條命令全部搞定
java 代碼
- mkdir -p src/{main/java/com/mycompany/webapp,test/java/com/mycompany/webapp,test/resources}
4) 添加一個嵌入式servlet/jsp容器jetty6,用nio重寫過的嵌入式伺服器,開發和調試web項目非常方便,這裡需要編輯唯一的設定檔pom.xml,其實並不難
xml 代碼
- <
project
xmlns
=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation
=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
- <
modelVersion
>
4.0.0
modelVersion
>
- <
groupId
>
com.mycompany.webapp
groupId
>
- <
artifactId
>
myweb
artifactId
>
- <
packaging
>
war
packaging
>
- <
version
>
1.0-SNAPSHOT
version
>
- <
name
>
myweb Maven Webapp
name
>
- <
url
>
http://maven.apache.org
url
>
- <
dependencies
>
- <
dependency
>
- <
groupId
>
junit
groupId
>
- <
artifactId
>
junit
artifactId
>
- <
version
>
3.8.1
version
>
- <
scope
>
test
scope
>
- dependency
>
- dependencies
>
- <
build
>
- <
finalName
>
myweb
finalName
>
-
- <
plugins
>
- <
plugin
>
- <
groupId
>
org.mortbay.jetty
groupId
>
- <
artifactId
>
maven-jetty-plugin
artifactId
>
- plugin
>
- plugins
>
-
- build
>
- project
>
5) 運行測試
java 代碼
- mvn jetty:run
在網路正常聯通的情況下,maven會自動下載所有的jar依賴包,然後啟動jetty6,可以在瀏覽器中訪問http://localhost:8080/myweb/
Jetty6已經啟動並顯示了經典到掉渣的“Hello World!”
現在可以修改src/main/webapp/index.jsp,然後在瀏覽器重新整理看效果了,最簡單的web骨架就這樣誕生了
停止jetty6的命令是Ctrl+C
之後,可以在pom.xml中添加spring,hibernate/ibatis,struts/struts2/webwork2以及report,xdoclet,hibernate代碼產生工具,DbUnit等等...(今天寫道這裡,以後在寫吧)
推薦兩篇文章:
http://www.blogjava.net/calvin/archive/2006/03/19/36098.html
http://www.ibm.com/developerworks/cn/opensource/os-maven2/