摘要:介紹簡介編寫的用于構建系統的自動化工具。文件的基本配置介紹什么是,項目對象模型。基本設置協作關系組織標識,例如,在目錄下,將是目錄。
1. Maven介紹
1.1. 簡介
java編寫的用于構建系統的自動化工具。
目前版本是2.0.9,注意maven2和maven1有很大區別,閱讀第三方文檔時需要區分版本。
1.2. Maven資源
?
見官方網站;
?
The 5 minute test,官方簡易入門文檔;
?
Getting Started Tutorial,官方入門文檔;
?
Build Cookbook,官方的cookbook;
?
POM Reference,POM文件的設置參考
?
Settings Reference ,settings文件的設置參考
?
Better Builds with Maven,免費的電子書,下載需要注冊。
1.3. Maven和Ant的區別
Maven正在逐漸取代Ant,很多java開源軟件(Spring、Struts2 ……)已經使用maven。
?不需要寫復雜的處理腳本;
?聲明式的類庫依賴管理。
1.4. Maven的基本功能
?構建:比如生成class、jar、war或者ear文件
?生成文檔:比如生成javadoc、網站文檔
?生成報告:比如junit測試報告
?生成依賴類庫:生成文檔,說明項目多其他軟件的依賴
?有關SCM:SCM(Software Configuration Management),軟件配置管理,比如版本控制,比如bug管理等等
?發布:生成供發布的分發包,比如生成Struts2的分發包,供提交給用戶使用
?部署:比如,web應用程序,自動部署到指定的服務器上
通過我寫的商品管理的小例子,演示結合maven和svn的功能。
2. Maven使用
2.1. Maven的安裝和配置
?從官方網站下載最新的Maven分發包http://maven.apache.org/download.html,當前為2.0.9;
?解壓縮到本地;
?配置maven, 將maven/bin目錄設置到windows環境變量Path中
?檢查maven是否安裝成功, 在命令行中執行 mvn -version
2.2. Maven的基本使用
Maven的基本使用介紹通過命令行編寫簡單的java和web項目。
2.2.1. 實現Java項目
通過maven在命令行下創建普通java項目,也就是main方法執行的項目或者jar文件的類庫。
2.2.1.1. 創建Maven項目
執行:
mvn archetype:generate
在交互界面中:
?Choose a number: 回車即可,也就是選擇15
?Define value for groupId: 輸入組織id,比如easymorse.com
?Define value for artifactId:輸入項目名稱,比如helloworld
?Define value for version: 輸入版本號,可以直接回車,默認是1.0-SNAPSHOT
?Define value for package: java的包名,比如com.easymorse
?然后回車表示確認上述輸入即可。
觀察helloworld目錄(Define value for artifactId輸入的項目名稱)下生成的文件和目錄:
?項目構建文件: pom.xml
?代碼框架: srcmainjavacomeasymorseApp.java
?
測試代碼: src estjavacomeasymorseAppTest.java
2.2.1.2. 運行Maven項目
命令行進入helloworld目錄Define value for artifactId輸入的項目名稱)。
項目打包
mvn package
檢查命令生成了什么?
?target目錄
?編譯了代碼
?編譯了測試代碼
?使用junit測試并生成的報告
?生成代碼的jar文件
運行打包的jar文件:
java -cp targethelloworld-1.0-SNAPSHOT.jar com.easymorse.App
編譯源程序
mvn compile
編譯并測試
mvn test
清空生成的文件
mvn clean
將maven項目轉化為eclipse項目
命令行運行:
mvn eclipse:eclipse
打開eclipse,菜單選擇:file>import>general>existing projects into workspace,在對話框中選中目錄,導入即可。
如果要清除有關eclipse項目的配置信息:
mvn -Dwtpversion=1.0 eclipse:clean
聯合使用
mvn eclipse:clean clean
2.2.2. 實現Web項目
通過maven在命令行下創建java web項目。
2.2.2.1. 創建Maven項目
在命令行輸入,這一步和創建java項目類似:
mvn archetype:generate
交互步驟說明:
?Choose a number: 回車即可,也就是選擇18,這里和java普通項目不一樣
?Define value for groupId: 輸入組織id,比如easymorse.com
?Define value for artifactId:輸入項目名稱,比如helloworld
?Define value for version: 輸入版本號,可以直接回車,默認是1.0-SNAPSHOT
?Define value for package: java的包名,比如com.easymorse
?然后回車表示確認上述輸入即可。
需要在pom.xml文件中增加servlet容器的插件:
org.codehaus.mojo tomcat-maven-plugin org.mortbay.jetty maven-jetty-plugin 6.1.6 maven-compiler-plugin 1.6 UTF-8
?tomcat插件
?jetty插件
?編譯插件的配置
repository目錄的作用
repository的位置,在用戶目錄的.m2目錄下。
repository目錄的作用,對依賴類庫的緩存。
2.2.2.2. 運行Maven項目
項目打包
mvn package
啟動tomcat
mvn tomcat:run
啟動jetty
mvn jetty:run
轉化為eclipse項目
mvn -Dwtpversion=1.5 eclipse:eclipse
這樣生成wtp插件的web項目。
打開eclipse,菜單選擇:file>import>general>existing projects into workspace,在對話框中選中目錄,導入即可。
另外,需要在eclipse里創建一個classpath變量,名稱為:M2_REPO,值為系統用戶下.m2/repository目錄。
3. POM文件的基本配置
3.1. POM介紹
3.1.1. 什么是POM
Project Object Model,項目對象模型。
通過xml格式保存的pom.xml文件。
作用類似ant的build.xml文件,功能更強大。
該文件用于管理:源代碼、配置文件、開發者的信息和角色、問題追蹤系統、組織信息、項目授權、項目的url、項目的依賴關系等等。
3.1.2. 快速瀏覽
一個完整的pom.xml文件,放置在項目的根目錄下。
4.0.0 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
3.2. 基本設置
3.2.1. 協作關系
4.0.0 org.codehaus.mojo my-project 1.0 war
?groupId : 組織標識,例如:org.codehaus.mojo,在M2_REPO目錄下,將是: org/codehaus/mojo目錄。
?artifactId : 項目名稱,例如:my-project,在M2_REPO目錄下,將是:org/codehaus/mojo/my-project目錄。
?version : 版本號,例如:1.0,在M2_REPO目錄下,將是:org/codehaus/mojo/my-project/1.0目錄。
?packaging : 打包的格式,可以為:pom , jar , maven-plugin , ejb , war , ear , rar , par
3.2.2. POM間關系
3.2.2.1. 依賴關系
依賴關系列表(dependency list)是POM的重要部分。
... junit junit 4.0 test
?groupId , artifactId , version :
?scope : compile(default),provided,runtime,test,system
?exclusions
如何查到依賴的類庫?
一般可以通過這個網站:http://www.mvnrepository.com
比如查詢hibernate,可以找到結果列表中的hibernate類庫條目。
點擊:http://www.mvnrepository.com/artifact/org.hibernate/hibernate,
選擇版本,比如3.2.6ga,即:http://www.mvnrepository.com/art ... /hibernate/3.2.6.ga
復制文章中的:
org.hibernate hibernate 3.2.6.ga
到pom.xml文件中即可。
是否還需要找到hibernate依賴的pom?
不需要,hibernate也會有pom,maven會通過它的pom自動找到它依賴的類庫。
3.2.2.2. 繼承關系
繼承其他pom.xml配置的內容。
maven提供了一個類似java.lang.Object的頂級父pom.xml文件。
可以通過下面命令查看當前pom.xml受到超pom.xml文件的影響:
mvn help:effective-pom
創建一個各種項目可復用的pom.xml文件:http://easymorse.googlecode.com/svn/trunk/pom/pom.xml
部署要復用的pom.xml文件:
mvn install
在自己的pom文件中繼承上述pom:
pom
3.2.2.3. 聚合關系
用于將多個maven項目聚合為一個大的項目。
比如目錄結構如下:
. |-- pom.xml |-- module-a `-- pom.xml |-- module-b `-- pom.xml |-- module-c `-- pom.xml |-- foo-all `-- pom.xml
那么總的pom.xml文件類似:
...module-a module-b module-c foo-all
參考文檔:http://maven.apache.org/plugins/maven-eclipse-plugin/reactor.html
原文示例有誤,見:modules.rar
3.2.3. 其他配置
maven的屬性,是值的占位符,類似EL,類似ant的屬性,比如${X},可用于pom文件任何賦值的位置。
有以下分類:
?env.X:操作系統環境變量,比如${env.PATH}
?
project.x:pom文件中的屬性,比如:
?
settings.x:settings.xml文件中的屬性,比如:
?Java System Properties:java.lang.System.getProperties()中的屬性,比如java.home,引用方式:${java.home}
?
自定義:在pom文件中可以:
3.3. 其他
3.3.1. 設置離線
在.m2目錄下創建settings.xml文件(如果沒有的話)
settings 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/xsd/settings-1.0.0.xsd">true
3.3.2. 安裝第三方包
經常有第三方包,因為一些原因,在網上repository上沒有,需要自己動手安裝。
比如sun某些版本的jar文件,比如oracle的驅動。
已oracle驅動程序為例,比如驅動路徑為c:/driver/ojdbc14.jar,是10.2.0.3.0版本
在該網址能夠查到:http://www.mvnrepository.com/artifact/com.oracle/ojdbc14 artifactId和groupId。
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.3.0 -Dpackaging=jar -Dfile=c:/driver/ojdbc14.jar
這樣就可以在pom中依賴引用了:
com.oracle ojdbc14 10.2.0.3.0
3.3.3. 部署到tomcat
tomcat配置有管理權限的用戶:conf omcat-users.xml
在pom文件的tomcat插件中添加:
tomcat-maven-plugin
在.m2/settings.xml文件中增加:
myserver marshal password
運行打包部署,在maven項目目錄下:
mvn tomcat:deploy
訪問:http://localhost:8080/mycontext/ 即可。
撤銷部署:
mvn tomcat:undeploy
啟動web應用:
mvn tomcat:start
停止web應用:
mvn tomcat:stop
重新部署:
mvn tomcat:redeploy
部署展開的war文件:
mvn war:exploded tomcat:exploded
3.3.4. 未講到的內容
?settings.xml的配置
?pom.xml的詳細配置
?
自定義插件的方法:http://maven.apache.org/plugins/maven-archetype-plugin/examples/archetype.html
?
自定義goal的執行:
?插件的查詢和使用
?搭建鏡像repository
?在maven中調用ant
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64116.html
摘要:一用途在創建項目的時候,可以自己手動創建,也可以利用工具創建,也就是來創建。可以用來創建項目部署項目安裝管理依賴編譯代碼管理二進制等。的目的是使項目過程規范化自動化高效化及強大的可擴展性。 一、maven用途 java在創建項目的時候,可以自己手動創建,也可以利用工具創建,也就是maven來創建。 maven可以用來創建項目、部署項目、安裝管理依賴、編譯代碼、管理二進制等。 mave...
摘要:的好處節省空間項目的體積相比傳統項目小很多,因為將包和項目分開了,通過依賴管理來管理包。一鍵構建項目可以完成的工作編譯測試運行打包部署。 Maven 簡介 什么是 Maven Apache Maven,是一個軟件項目管理及自動構建工具,由Apache軟件基金會所提供,一個開源項目,由 Java 開發,并且只是用來管理 Java 項目的。 Maven 的好處 節省空間: Maven ...
摘要:的好處節省空間項目的體積相比傳統項目小很多,因為將包和項目分開了,通過依賴管理來管理包。一鍵構建項目可以完成的工作編譯測試運行打包部署。 Maven 簡介 什么是 Maven Apache Maven,是一個軟件項目管理及自動構建工具,由Apache軟件基金會所提供,一個開源項目,由 Java 開發,并且只是用來管理 Java 項目的。 Maven 的好處 節省空間: Maven ...
閱讀 705·2021-11-18 10:02
閱讀 2241·2021-11-15 18:13
閱讀 3158·2021-11-15 11:38
閱讀 2947·2021-09-22 15:55
閱讀 3674·2021-08-09 13:43
閱讀 2447·2021-07-25 14:19
閱讀 2456·2019-08-30 14:15
閱讀 3448·2019-08-30 14:15