[ZT]Maven常用命令 收藏
Maven常用命令
關(guān)鍵字: maven常用命令
1,、常用命令
mvn compile
編譯主程序源代碼,,不會編譯test目錄的源代碼。第一次運(yùn)行時(shí),,會下載相關(guān)的依賴包,,可能會比較費(fèi)時(shí)。
mvn test-compile
編譯測試代碼,,compile之后會生成target文件夾,,主程序編譯在classes下面,測試程序放在test-classes下,。
mvn test
運(yùn)行應(yīng)用程序中的單元測試
mvn site
生成項(xiàng)目相關(guān)信息的網(wǎng)站
mvn clean
清除目標(biāo)目錄中的生成結(jié)果
mvn package
依據(jù)項(xiàng)目生成 jar 文件,,打包之前會進(jìn)行編譯,測試,。
mvn install
在本地 Repository 中安裝 jar,。
mvn eclipse:eclipse
生成 Eclipse 項(xiàng)目文件及包引用定義,注意,,需確保定義Classpath Variables: M2_REPO,,指向本地maven類庫目錄。
2,、pom.xml 說明
<?xml version="1.0" encoding="UTF-8"?>
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutorial.struts2</groupId>
<artifactId>tutorial</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Struts 2 Starter</name>
<url>http://www.myComp.com</url>
<description>Struts 2 Starter</description>
<dependencies>
<!-- Junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.5</version>
</dependency>
</dependencies>
</project>
說明:
modelversion pom.xml 使用的對象模型版本
groupId 創(chuàng)建項(xiàng)目的組織或團(tuán)體的唯一 Id
artifactId> 項(xiàng)目唯一Id, 項(xiàng)目名
packaging 打包擴(kuò)展名(JAR,、WAR、EAR)
version 項(xiàng)目版本號
name 顯示名,,用于生成文檔
url 組織站點(diǎn),,用于生成文檔
description 項(xiàng)目描述,,用于生成文檔
dependency之scope 管理依賴部署,取值如下:
compile 缺省值,,用于所有階段,,隨項(xiàng)目一起發(fā)布;
provided 期望JDK,、容器或使用者提供此依賴,。如servlet.jar;
runtime 只在運(yùn)行時(shí)使用,;
test 只在測試時(shí)使用,,不隨項(xiàng)目發(fā)布;
system 需顯式提供本地jar,,不在代碼倉庫中查找,;
3、創(chuàng)建Maven Web項(xiàng)目
mvn archetype:generate -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp
groupId 組織名,,對應(yīng)項(xiàng)目的package,;artifactId 項(xiàng)目名;archetypeArtifactId 項(xiàng)目類型
mvn -Declipse.workspace=c:\eclipse\workspace eclipse:add-maven-repo
為給eclipse指定工作空間,。"c:\eclipse\workspace "即eclipse的workspace
mvn eclipse:eclipse
為項(xiàng)目造成eclipse工程文件,。即將maven項(xiàng)目轉(zhuǎn)化為一個eclipse工程
mvn –o war:exploded 離線發(fā)布修改過的jsp等工程文件
mvn –o package –Dmaven.test.skip=true
離線打包工程,不含測試代碼
mvn compile hibernate3:hbm2ddl 會通過hibernate映射文件創(chuàng)建數(shù)據(jù)庫表,。
mvn –o appfuse:gen –Dentity=Teacher
mvn –o appfuse:install –Dentity=Teacher
通過appfuse框架自動生成與實(shí)體類對應(yīng)的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包安裝到應(yīng)用中去。"D:\Test\ssh\WebRoot\WEB-INF\lib\jta.jar"即本地包
Maven2 的運(yùn)行命令為 : mvn ,,
常用命令為 :
mvn archetype:create :創(chuàng)建 Maven 項(xiàng)目
mvn compile :編譯源代碼
mvn test-compile :編譯測試代碼
mvn test : 運(yùn)行應(yīng)用程序中的單元測試
mvn site : 生成項(xiàng)目相關(guān)信息的網(wǎng)站
mvn clean :清除目標(biāo)目錄中的生成結(jié)果
mvn package : 依據(jù)項(xiàng)目生成 jar 文件
mvn install :在本地 Repository 中安裝 jar
mvn eclipse:eclipse :生成 Eclipse 項(xiàng)目文件
生成項(xiàng)目
建一個 JAVA 項(xiàng)目 : mvn archetype:create -DgroupId=com.demo -DartifactId=App
建一個 web 項(xiàng)目 : mvn archetype:create -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp
生成 Eclipse 項(xiàng)目
普通 Eclipse 項(xiàng)目執(zhí)行 : mvn eclipse:eclipse
Eclipse WTP 項(xiàng)目執(zhí)行 : mvn eclipse:eclipse –Dwtpversion=1.0
( wtp1.0 以上版本均可用)
pom.xml 文件基本節(jié)點(diǎn)介紹
<project > :文件的根節(jié)點(diǎn) .
<modelversion > : pom.xml 使用的對象模型版本 .
<groupId > :創(chuàng)建項(xiàng)目的組織或團(tuán)體的唯一 Id.
<artifactId > :項(xiàng)目的唯一 Id, 可視為項(xiàng)目名 .
<packaging > :打包物的擴(kuò)展名,,一般有 JAR,WAR,EAR 等
<version > :產(chǎn)品的版本號 .
<name > :項(xiàng)目的顯示名,常用于 Maven 生成的文檔,。
<url > :組織的站點(diǎn),,常用于 Maven 生成的文檔。
<description > :項(xiàng)目的描述,,常用于 Maven 生成的文檔,。
在 POM 4 中, <dependency> 中還引入了 <scope> ,,它主要管理依賴的部署,。
目前 <scope> 可以使用 5 個值:
compile :缺省值,適用于所有階段,,會隨著項(xiàng)目一起發(fā)布,。
provided :類似 compile ,期望 JDK ,、容器或使用者會提供這個依賴,。如 servlet.jar ,。
runtime :只在運(yùn)行時(shí)使用,如 JDBC 驅(qū)動,,適用運(yùn)行和測試階段,。
test :只在測試時(shí)使用,用于編譯和運(yùn)行測試代碼,。不會隨項(xiàng)目發(fā)布,。
system :類似 provided ,需要顯式提供包含依賴的 jar ,, Maven 不會在 Repository 中查找它,。
定義自己的結(jié)構(gòu)
新建一個 archetype 項(xiàng)目 :
mvn archetype:create\
-DgroupId=cn.prof\
-DartifactId=prof-archetype\
-DarchetypeArtifactId=maven-archetype-archetype
主要的模板文件 : archetype-resources/pom.xml
修改其中內(nèi)容
修改 META-INF/maven/archetype.xml 中定義了相關(guān)的 sources
安裝此項(xiàng)目 : mvn install
執(zhí)行下面的命令創(chuàng)建新目錄的項(xiàng)目:
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 的項(xiàng)目設(shè)置文件
src/
源碼目錄
main/
項(xiàng)目主體目錄根
java/
源代碼目錄
resources/
所需資源目錄
filters/
資源過濾文件目錄
assemby/
Assembly descriptors
config/
配置文件根目錄
webapp/
web 應(yīng)用目錄
WEB-INF/
WEB-INF 目錄
test/
項(xiàng)目測試目錄根
java/
測試代碼目錄
resources/
測試所需資源目錄
filters/
測試資源過濾文件目錄
site/
與site 相關(guān)的資源目錄
target/
輸出目錄根
classes/
項(xiàng)目主體輸出目錄
test_classes/
項(xiàng)目測試輸出目錄
site/
項(xiàng)目site 輸出目錄
在Maven2中有了明確的生命周期概念,而且都提供與之對應(yīng)的命令,,使得項(xiàng)目構(gòu)建更加清晰明了。主要的生命周期階段:
validate,,驗(yàn)證工程是否正確,,所有需要的資源是否可用。
compile,,編譯項(xiàng)目的源代碼,。
test-compile,編譯項(xiàng)目測試代碼,。
test,,使用已編譯的測試代碼,測試已編譯的源代碼,。
package,,已發(fā)布的格式,如jar,,將已編譯的源代碼打包,。
integration-test,在集成測試可以運(yùn)行的環(huán)境中處理和發(fā)布包,。
verify,,運(yùn)行任何檢查,驗(yàn)證包是否有效且達(dá)到質(zhì)量標(biāo)準(zhǔn),。
install,,把包安裝在本地的repository中,可以被其他工程作為依賴來使用
deploy,,在整合或者發(fā)布環(huán)境下執(zhí)行,,將最終版本的包拷貝到遠(yuǎn)程的repository,使得其他的開發(fā)者或者工程可以共享,。
generate-sources,,產(chǎn)生應(yīng)用需要的任何額外的源代碼,,如xdoclet。
如果要執(zhí)行項(xiàng)目編譯,,那么直接輸入:mvn compile即可,,對于其他的階段可以類推。階段之間是存在依賴關(guān)系(dependency)的,,如test依賴test-compile,。在執(zhí)行 mvn test時(shí),會先運(yùn)行mvn test-compile,,然后才是mvn test
因?yàn)閙aven2 是有生命周期這一概念的,,所以如果你執(zhí)行package,相應(yīng)的以前步驟,,如compile,test等都會自動執(zhí)行,。
剛開始執(zhí)行會比較慢,需要從maven2遠(yuǎn)程庫中下載所有的文件到本地,。如果你的本地沒有相應(yīng)的依賴包,,則每次maven都會去遠(yuǎn)程下載,所以配置一個鏡像庫就比較重要了,。
碰到的問題
1. 當(dāng) M2eclipse 插件裝上之后,,會報(bào)這個錯
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 里面有詳細(xì)說明,在 Selecting a workspace 這一節(jié)
創(chuàng)建一個快捷方式,,設(shè)定目標(biāo)位置為 D:\eclipse_jee\eclipse.exe -vm D:\Java\jdk1.5.0_10\bin\javaw
因?yàn)槟J(rèn) vm 為 jdk\jre\bin\javaw ,,直接改到 jdk 下,錯誤即可消除
2. 使用命令 mvn eclipse:eclipse –Dwtpversion=1.0 之后,,導(dǎo)入的項(xiàng)目 Project Facet 的 java 還是 1.4 ,,而我 Eclipse 上設(shè)置的是 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項(xiàng)目上點(diǎn)右鍵,,選擇插件Maven>Enable Dependency Management后,會報(bào)重復(fù)引用依賴的錯誤
解決辦法 :再執(zhí)行mvn eclipse:eclipse然后刷新Eclipse的項(xiàng)目,,取消掉maven插件的引用依賴,,錯誤就會消除
4. Failure executing javac, but could not parse the error:
編譯器 (1.5.0_10) 中出現(xiàn)異常。 如果在 Bug Parade 中沒有找到該錯誤,,請?jiān)?Java Developer Connection (http://java./webapps/bugreport ) 對該錯誤進(jìn)行歸檔,。請?jiān)趫?bào)告中附上您的程序和以下診斷信息。謝謝您的合作,。
java.nio.BufferOverflowException
解決辦法 :(臨時(shí))在控制面板中將區(qū)域與語言選項(xiàng)中,,把當(dāng)?shù)卣Z言設(shè)為英語