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