Maven 一. 简介 二. 常用命令

  基于java平台的项目构建、依赖管理和项目信息管理。默认有个公共*仓库:http://repo1.maven.org/maven2/(在$M2_HOME/llib/maven-model-builder-3.0.3.jarorgapachemavenmodel/pom-4.0.0.xml的repositories中定义)
  运行mvn命令实际上是执行java命令,所以运行java命令可用的参数当然也可以在运行mvn命令时可用,通过MAVEN_OPTS设置,如"-Xms128m -Xmx512m"。

二. 常用命令

• 生成java项目骨架
mvn archetype:create -DgroupId=com.sohu.adrd -DartifactId=adu-test
mvn archetype:generate (交互方式)
或者通过eclipse:New-->Other-->Maven:Maven Project-->New Maven Project:默认-->Archetype:maven-archetype-quichstart...

• 编译
mvn compile

• 生成jar包
mvn package

• 在本地Repository中安装jar
mvn install 

• 发布
mvn deploy

• 编译测试源代码
mvn test-compile

• 依赖相关
mvn dependency:list (查看该项目已解析的依赖,即使用到的)
mvn dependency:tree (查看依赖树)
mvn dependency:analyze (分析依赖)
mvn dependency:sources
mvn dependency:tree>d: ree.txt

• 生成eclipse项目文件
mvn eclipse:eclipse
mvn eclipse:eclipse -DdownloadSources=true  -DdownloadJavadocs=true 

• 生成项目相关信息的网站
mvn site

• 启动tomcat服务
mvntomcat:run 

• 执行某个主程序
mvn exec:java -Dexec.mainClass="com.qunar.des.baofang.main.web.controller.dds.test.StartUpTest" -Dexec.args=" 323179658 0 0 5"

• 虚拟机参数(如MAVEN_OPTS="-Xms1g -Xmx1g")
mvn ... -DargLine=-Xmx3200m
1)内存
-Xms1g -Xmx1g
2)调试(或者用mvnDebug命令)
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000
3)垃圾回收
-XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+UseParNewGC -Xloggc:logs/gc.log
4)其他参数
-server -verbose:gc -XX:PermSize=64M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:-CMSParallelRemarkEnabled -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:GCTimeRatio=19 -XX:CMSInitiatingOccupancyFraction=70 -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled

• 跳过单元测试
mvn install -Dmaven.test.skip=true

• 执行某个单元测试类
mvn test -Dtest=com.package.MyTestCase
mvn test -Dtest=Random*Test,BTest
mvn test -Dtest=ATest,BTest

• 运行测试类中指定的方法(这个需要maven-surefire-plugin:2.7.3以上版本才能支持) 
mvn test -Dtest=[ClassName]#[MethodName]    [MethodName]为要运行的方法名,支持*通配符
范例:
1) #mvn test -Dtest=MyClassTest#test1   
2) #mvn test -Dtest=MyClassTest#*test*
3)mvn test -Dtest=test.server.CMSTimerTaskTest#getLatestNewsBetween -DargLine=-Xmx3200m
mvn test -Dtest=com.sohu.datacenter.thrift.ThriftTest#pressureTest
4)nohup mvn test -Dtest=MyClassTest#test1 >> /dev/null 2>&1 &


三.QA
1. eclipse时出现"Unsupported IClasspathEntry kind=4"错误
解决方案:
1)去掉项目Maven特性
Maven-->Disable Maven Nature
2)命令行进入项目目录
#mvn eclipse:clean
3)重新激活项目Maven特性
Configure-->Convert to Maven Projects...