1、常用命令
mvn compile
編譯主程序源代碼,不會編譯test目錄的源代碼。第一次運行時,會下載相關的依賴包,可能會比較費時。
mvn test-compile
編譯測試代碼,compile之后會生成target文件夾,主程序編譯在classes下面,測試程序放在test-classes下。
mvn test
運行應用程序中的單元測試
mvn site
生成項目相關信息的網站
mvn clean
清除目標目錄中的生成結果
mvn package
依據項目生成 jar 文件,打包之前會進行編譯,測試。
mvn install
在本地 Repository 中安裝 jar。
mvn eclipse:eclipse
生成 Eclipse 項目文件及包引用定義,注意,需確保定義Classpath Variables: M2_REPO,指向本地maven類庫目錄。
?
?
使 maven2 在 下載 依賴包的同時 下載 其 源代碼 包的方法:
使用 maven命令 :
mvn dependency:sources 下載 依賴包的 源代碼 。
?
?
2、pom.xml 說明


























說明:
modelversion pom.xml 使用的對象模型版本
groupId 創建項目的組織或團體的唯一 Id
artifactId> 項目唯一Id, 項目名
packaging 打包擴展名(JAR、WAR、EAR)
version 項目版本號
name 顯示名,用于生成文檔
url 組織站點,用于生成文檔
description 項目描述,用于生成文檔
dependency之scope 管理依賴部署,取值如下:
compile 缺省值,用于所有階段,隨項目一起發布;
provided 期望JDK、容器或使用者提供此依賴。如servlet.jar;
runtime 只在運行時使用;
test 只在測試時使用,不隨項目發布;
system 需顯式提供本地jar,不在代碼倉庫中查找;
3、創建Maven Web項目
?mvn archetype:generate -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp
groupId 組織名,對應項目的package;artifactId 項目名;archetypeArtifactId 項目類型
?
mvn?-Declipse.workspace=c:\eclipse\workspace?eclipse:add- maven -repo??
?
為給eclipse指定工作空間。"c:\eclipse\workspace "即eclipse的workspace
- mvn?eclipse:eclipse??
為項目造成eclipse工程文件。即將 maven 項目轉化為一個eclipse工程
-
mvn?–o?war:exploded?
離線發布修改過的jsp等工程文件
離線打包工程,不含測試代碼
-
mvn?compile?hibernate3:hbm2ddl??
會通過hibernate映射文件創建數據庫表。
mvn –o appfuse:gen –Dentity=Teacher
mvn –o appfuse:install –Dentity=Teacher
通過appfuse框架自動生成與實體類對應的dao,service,action,test、jsp等程序文件
mvn install:install-file -DgroupId=javax.transaction -DartifactId=jta -Dversion=1.0.1B -Dpackaging=jar -Dfile=D:\Test\ssh\WebRoot\WEB-INF\lib\jta.jar
將本地jar包安裝到應用中去。"D:\Test\ssh\WebRoot\WEB-INF\lib\jta.jar"即本地包
Maven2 的運行命令為 : mvn ,
常用命令為 :
???????????? mvn archetype:create :創建 Maven 項目
???????????? mvn compile :編譯源代碼
???????????? mvn test-compile :編譯測試代碼
???????????? mvn test : 運行應用程序中的單元測試
???????????? mvn site : 生成項目相關信息的網站
???????????? mvn clean :清除目標目錄中的生成結果
???????????? mvn package : 依據項目生成 jar 文件
???????????? mvn install :在本地 Repository 中安裝 jar
???????????? mvn eclipse:eclipse :生成 Eclipse 項目文件
生成項目
???????????? 建一個 JAVA 項目 : mvn archetype:create -DgroupId=com.demo -DartifactId=App
????????? 建一個 web 項目 : mvn archetype:create -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp
?
生成 Eclipse 項目
普通 Eclipse 項目執行 : mvn eclipse:eclipse
?????????? Eclipse WTP 項目執行 : mvn eclipse:eclipse –Dwtpversion=1.0
????????????? ( wtp1.0 以上版本均可用)
?
?
?
pom.xml 文件基本節點介紹
<project > :文件的根節點 .
<modelversion > : pom.xml 使用的對象模型版本 .
<groupId > :創建項目的組織或團體的唯一 Id.
<artifactId > :項目的唯一 Id, 可視為項目名 .
<packaging > :打包物的擴展名,一般有 JAR,WAR,EAR 等
<version > :產品的版本號 .
<name > :項目的顯示名,常用于 Maven 生成的文檔。
<url > :組織的站點,常用于 Maven 生成的文檔。
<description > :項目的描述,常用于 Maven 生成的文檔。
?
?
?
在 POM 4 中, <dependency> 中還引入了 <scope> ,它主要管理依賴的部署。
目前 <scope> 可以使用 5 個值:
compile :缺省值,適用于所有階段,會隨著項目一起發布。
provided :類似 compile ,期望 JDK 、容器或使用者會提供這個依賴。如 servlet.jar 。
runtime :只在運行時使用,如 JDBC 驅動,適用運行和測試階段。
test :只在測試時使用,用于編譯和運行測試代碼。不會隨項目發布。
???????? system :類似 provided ,需要顯式提供包含依賴的 jar , Maven 不會在 Repository 中查找它。
定義自己的結構
新建一個 archetype 項目 :
mvn archetype:create\
-DgroupId=cn.prof\
-DartifactId=prof-archetype\
-DarchetypeArtifactId=maven-archetype-archetype
?????? 主要的模板文件 : archetype-resources/pom.xml
?????? 修改其中內容
?????? 修改 META-INF/maven/archetype.xml 中定義了相關的 sources
?????? 安裝此項目 : mvn install
執行下面的命令創建新目錄的項目:
mvn archetype:create -DgroupId=com.mergere.mvnbook \
-DartifactId=proficio-example\
-DarchetypeGroupId=com.xxx.mvn\
-DarchetypeArtifactId= prof-archetype \
-DarchetypeVersion=1.0-SNAPSHOT
?
?
目錄說明
Maven2? Directory
?
目錄
?二級目錄
?三級目錄
?四級目錄
?說明
?
pom.xml
?
?Maven2 的項目設置文件
?
src/
?
?源碼目錄
?
main/
?
?項目主體目錄根
?
java/
?
?源代碼目錄
?
resources/
?
?所需資源目錄
?
filters/
?
?資源過濾文件目錄
?
assemby/
?
?Assembly descriptors
?
config/
?
?配置文件根目錄
?
webapp/
?
?web 應用目錄
?
WEB-INF/
?WEB-INF 目錄
?
test/
?
?項目測試目錄根
?
java/
?
?測試代碼目錄
?
resources/
?
?測試所需資源目錄
?
filters/
?
?測試資源過濾文件目錄
?
site/
?
?與site 相關的資源目錄
?
target/
?
?輸出目錄根
?
classes/
?
?
?項目主體輸出目錄
?
test_classes/
?
?項目測試輸出目錄
?
site/
?
?項目site 輸出目錄
?
?
?
?
?
?
?
??? 在Maven2中有了明確的生命周期概念,而且都提供與之對應的命令,使得項目構建更加清晰明了。主要的生命周期階段:
?
?
??? validate,驗證工程是否正確,所有需要的資源是否可用。
compile,編譯項目的源代碼。
test-compile,編譯項目測試代碼。
test,使用已編譯的測試代碼,測試已編譯的源代碼。
package,已發布的格式,如jar,將已編譯的源代碼打包。
integration-test,在集成測試可以運行的環境中處理和發布包。
verify,運行任何檢查,驗證包是否有效且達到質量標準。
install,把包安裝在本地的repository中,可以被其他工程作為依賴來使用
deploy,在整合或者發布環境下執行,將最終版本的包拷貝到遠程的repository,使得其他的開發者或者工程可以共享。
generate-sources,產生應用需要的任何額外的源代碼,如xdoclet。
如果要執行項目編譯,那么直接輸入:mvn compile即可,對于其他的階段可以類推。階段之間是存在依賴關系(dependency)的,如test依賴test-compile。在執行 mvn test時,會先運行mvn test-compile,然后才是mvn test
因為maven2 是有生命周期這一概念的,所以如果你執行package,相應的以前步驟,如compile,test等都會自動執行。
剛開始執行會比較慢,需要從maven2遠程庫中下載所有的文件到本地。如果你的本地沒有相應的依賴包,則每次maven都會去遠程下載,所以配置一個鏡像庫就比較重要了。
?
?
碰到的問題
1.?????? 當 M2eclipse 插件裝上之后,會報這個錯
Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
解決辦法 :查看 eclipse\readme\readme_eclipse.html 里面有詳細說明,在 Selecting a workspace 這一節
創建一個快捷方式,設定目標位置為 D:\eclipse_jee\eclipse.exe -vm D:\Java\jdk1.5.0_10\bin\javaw
因為默認 vm 為 jdk\jre\bin\javaw ,直接改到 jdk 下,錯誤即可消除
?
2.?????? 使用命令 mvn eclipse:eclipse –Dwtpversion=1.0 之后,導入的項目 Project Facet 的 java 還是 1.4 ,而我 Eclipse 上設置的是 5.0
解決辦法 :在 pom.xml 中 plugins 加入說明就可以了
Xml代碼
<plugins>?
??????? <plugin>?
?????????? <artifactId>maven-compiler-plugin</artifactId>?
?????????? <configuration>?
?????????????? <source>1.5</source>?
?????????????? <target>1.5</target>?
?????????? </configuration>?
??????? </plugin>?
</plugins>?
<plugins>???????? <plugin>??????????? <artifactId>maven-compiler-plugin</artifactId>??????????? <configuration>??????????????? <source>1.5</source>??????????????? <target>1.5</target>??????????? </configuration>???????? </plugin> </plugins>
?
3.?? 在使用命令mvn eclipse:eclipse 之后,import到Eclipse,然后在Eclipse項目上點右鍵,選擇插件Maven>Enable Dependency Management后,會報重復引用依賴的錯誤
解決辦法 :再執行mvn eclipse:eclipse然后刷新Eclipse的項目,取消掉maven插件的引用依賴,錯誤就會消除
?
4.?? Failure executing javac, but could not parse the error:
編譯器 (1.5.0_10) 中出現異常。 如果在 Bug Parade 中沒有找到該錯誤,請在 Java Developer Connection (
http://java.sun.com/webapps/bugreport
)? 對該錯誤進行歸檔。請在報告中附上您的程序和以下診斷信息。謝謝您的合作。
java.nio.BufferOverflowException
解決辦法 :(臨時)在控制面板中將區域與語言選項中,把當地語言設為英語
(為什么我還會出現這個問題?請指教)
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
