##显示当前构建的实际POM,包含活动的Profile 并重定向到一个文件,方便查看
mvn help:effective-pom > l
##列出当前构建中活动的Profile(项目的,用户的,全局的)
mvn help:active-profiles
##打印出项目的实际settings, 包括从全局的settings和用户级别settings继承的配置
help:effective-settings
##描述插件的属性。它不需要在项目目录下运行。但是你必须提供你想要描述插件的 groupId 和 artifactId
help:describe
mvn help:describe -Dcmd=package
mvn help:describe -Dcmd=jar:jar
mvn help:describe -Dplugin=help
##在Maven里面, 一个插件目标也被认为是一个 “Mojo”
mvn help:describe -Dplugin=compiler -Dmojo=compile -Dfull
##
mvn -e -B clean install -Denv=release -st.skip=true -Dautoconf.skip -Dmaven.wagon.provider.http=httpclient -Dmaven.wagon.provider.https=httpclient
##常用命令
mvn clean
mvn package
mvn package -Prelease
mvn install
mvn eclipse:eclipse
archetype
mvn archetype:generate -DgroupId -DartifactId -DpackageName archetypeArtifactId (maven-archetype-webapp)
mvn archetype:create -DgroupId -DartifactId -DpackageName
mvn compile
mvn test
mvn eclipse:eclipse
mvn eclipse:clean
mvn package
mvn install
mvn clean
mvn site
mvn -U
mvn -o
mvn -N
mvn -pl 模块名
mvn -ff
mvn -Dxxx=yyy
mvn -Pxxx
mvn -st.skip=true
maven内存不够用
通常是PermSize不够,用下面参数一般可解决问题
MAVEN_OPTS=-Xms256m -Xmx512m -XX:ReservedCodeCacheSize=64m -XX:MaxPermSize=128m
maven tab自动匹配配置(ubuntu)
* touch /etc/bash_completion.d/maven2
* 拷贝备注描述内容到maven2文件
单独编译子模块
mvn -pl biz/album -am -amd eclipse:eclipse
解释:
-pl : 可以指定你需要执行命令的模块,以","分割。
-am :如果该模块依赖了同一个大项目下的其他的模块,也一并加入到reactor列表来执行后面的命令。
-amd 意思是:如果有依赖该模块的其他模块,也一并加入到reactor列表来执行后面的命令
单独编译上层模块
mvn clean install -N -pl tpsc.client
-N :不对该工程下的子模块进行递归处理
maven-surefire-plugin 单元测试,testNG
mvn package
##会调用:
resources:resources
##Resources插件的resources目标绑定到了resources 阶段。这个目标复制src/main/resources下的所有资源和其它任何配置的资源目录,到输出目录。
compiler:compile
##Compiler插件的compile目标绑定到了compile 阶段。这个目标编译src/main/java下的所有源代码和其他任何配置的资源目录,到输出目录。
resources:testResources
##Resources插件的testResources目标绑定到了test-resources 阶段。这个目标复制src/test/resources下的所有资源和其它任何的配置的测试资源目录,到测试输出目录。
compiler:testCompile
##Compile
r插件的testCompile目标绑定到了test-compile 阶段。这个目标编译src/test/java下的测试用例和其它任何的配置的测试资源目录,到测试输出目录。
surefire:test
##Surefire插件的test目标绑定到了test 阶段。这个目标运行所有的测试并且创建那些捕捉详细测试结果的输出文件。默认情况下,如果有测试失败,这个目标会终止。一个简单的Maven项目
jar:jar
##Jar插件的jar目标绑定到了package 阶段。这个目标把输出目录打包成JAR文件。
##同义词
mvn resources:resources compiler:compile resources:testResources compiler:testCompile surefire:test jar:jar
##项目的构件安装到本地仓库
mvn install
##生成文档和报告
mvn site
出错:SiteToolException ArtifactNotFoundException The skin does not exist Unable to determine the release version
先下载
-inc/mvn/external/org/apache/maven/skins/maven-default-skin/1.0/
maven-default-skin-1.0.jar
l
然后
Z:\xiaoxiang\m2\repository\org\apache\maven\skins\maven-default-skin
下面的两个文件加入
<version>1.0</version>
<versioning>
<latest>1.0</latest>
<release>1.0</release>
<versions>
<version>1.0</version>
</versions>
<lastUpdated>20100311012304</lastUpdated>
</versioning>
settings中文意思
##执行某个类的方法 注意,多模块下,要先转到该模块,不能在父模块执行,否则会出错
mvn exec:java -Dexec.mainClass=common.util.StringUtil
mvn exec:java -Dexec.mainClass=com.Main -Dexec.args="1 128"
mvnDebug exec:java -Dexec.mainClass=com.Main -Dexec.args="1 128"
mvnDebug exec:java -Dexec.mainClass="lipse.jetty.start.Main" -Dexec.args="--ini=/home/admin/webapp/jetty_server/conf/start.ini" -Dexec.classpathScope=runtime
mvnDebug install exec:java -Dexec.mainClass=com.supplygoods.screen.SupplyGoodsMain -e
mvnDebug install exec:java -Dexec.mainClass=com.GoodsTest -e
##帮助查看
mvn help:describe -Dplugin=exec -Dfull
##在Maven2中运行单个测试用例并添加JVM参数
mvn -Dtest=TestXXX test
测试调试
mvnDebug -DforkMode=true test -Dtest=com.alisoft.eshop.GoodsTest
mvn -Dmaven.surefire.debug="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -Xnoagent -Djavapiler=NONE" -Dtest=com.alisoft.eshop.GoodsTest test
##项目的整个依赖树
mvn dependency:tree
##完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件
mvn install -X
##测试失败,它默认的行为是停止当前的构建修改默认有两种方式
mvn test -st.failure.ignore=true
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<testFailureIgnore>true</testFailureIgnore>
</configuration>
</plugin>
##帮助你发现对于依赖的直接引用
mvn dependency:analyze
#
#常量
env
project
settings
生命周期阶段描述
validate 验证项目是否正确,以及所有为了完整构建必要的信息是否可用
generate-sources 生成所有需要包含在编译过程中的源代码
process-sources 处理源代码,比如过滤一些值
generate-resources 生成所有需要包含在打包过程中的资源文件
process-resources 复制并处理资源文件至目标目录,准备打包
compile 编译项目的源代码
process-classes 后处理编译生成的文件,例如对Java类进行字节码增强(bytecode enhancement)
generate-test-sources 生成所有包含在测试编译过程中的测试源码
process-test-sources 处理测试源码,比如过滤一些值
generate-test-resources 生成测试需要的资源文件
process-test-resources 复制并处理测试资源文件至测试目标目录
test-compile 编译测试源码至测试目标目录
test 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
prepare-package 在真正的打包之前,执行一些准备打包必要的操作。这通常会产生一个包的展开的处理过的版本(将会在Maven 2.1+中实现)
package 将编译好的代码打包成可分发的格式,如JAR,WAR,或者EAR
pre-integration-test 执行一些在集成测试运行之前需要的动作。如建立集成测试需要的环境
integration-test 如果有必要的话,处理包并发布至集成测试可以运行的环境
post-integration-test 执行一些在集成测试运行之后需要的动作。如清理集成测试环境。
verify 执行所有检查,验证包是有效的,符合质量规范
install 安装包至本地仓库,以备本地的其它项目作为依赖使用
deploy 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)
Deploy
Deploy插件的deploy目标通常绑定到deploy生命周期阶段。该阶段用来将一个构件
部署到远程Maven仓库,当你执行一次发布的时候通常需要更新远程仓库。一次部署
过程可以简单到复制一个文件至另外一个目录,或者复杂到使用公钥通过SCP传送一
个文件。部署设置通常包含远程仓库的证书,并且,这样的部署设置通常不会存储
在l中。部署设置通常可以在用户单独的~/.l中到。到现在为
止,你要知道的是deploy:deploy被绑定到deploy阶段,它会处理传送一个构件至发布仓
库,更新一些可能被此次部署影响的仓库信息
利用maven如何让jetty以debug方式启动
mvnDebug jetty:run-war
mvn jetty:run默认启动的是8080端口,tomcat通常占用这个端口,可以手动修改jetty插件的启动端口,命令如下:
mvnDebug jetty:run -Djetty.port=8081
下载源代码
mvn dependency:sources
加入其它仓库
在l
中加入
<mirror>
<id>ynzc</id>
<mirror
Of>central</mirrorOf>
<name>ynzc</name>
<url>/nexus/content/groups/public</url>
</mirror>
<dependency>
<groupId>net.sourceforge</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency>
///////////////plugin////////////////////////////////
mvn archetype:create -DgroupId=com.xiaoxiang.maven -DartifactId=maven-xiaoxiang-plugin -DarchetypeArtifactId=maven-archetype-mojo
开发plugin
/guides/plugin/guide-java-plugin-development.html
www.iteye/topic/1117477
www.iteye/topic/348945
//运行plugin
mvn com.xiaoxiang.maven:config-maven-plugin:1.0:config
mvnDebug com.xiaoxiang.maven:config-maven-plugin:1.0:config
mvn -Dtest=ConfigMojoTest test
boolean(包括 boolean和Boolean)
int(包括Integer,long, Long, short, Short, byte, Byte)
float(包括Float, double, Double)
String (包括StringBuffer, char, Character)
Date(格式为 yyyy-MM0dd HH:mm:ss S a 或者 yyyy-MM-ddHH:mm:ssa)
File(文件路径)
URL(url地址)
Collection
Map
Properties
实际上一个maven插件大体就是这个样子的。当然我们可以通过我们的其它代码写入我们的业务逻辑。
实际上包括mojo还有mojo中的成员变量都是通过注解方式配置的
那么下面简单说说mojo的主要的注解吧
goal:注解形式:@goal <goalName>
用户在命令行下直接调用插件的目标goal,或者在项目的pom文件中通过配置调用这个goal。
phase:注解形式:@phase <phaseName>
绑定这个mojo到标准构建生命周期里对应的阶段.
@requiresProject <true | false>
这个注解的意思是这个Mojo是否再一个 Maven项目中运行,我们上面的例子是直接在mvn仓库中运行这个插件。所以设置为false.如果没有进行过设置则默认是为true的
@requiresonline <true|false>
是否需要Maven必须在线状态.
对于一个mojo里的变量参数,也有一些常用的注解:
@parameter expression=”${aSystemProperty}” default-value=”${anExpression}”
对参数指定一个计算表达式、在mojo构建时将计算结果注入到此变量中,同时也可以给定一个默认值。这个参数值也可以在pom文件中予以配置。
@readonly
表示改Mojo参数是只读的,如果使用了注解。用户就无法对其进行配置
@required
MavenSession中executionProperties有以下变量,可以引用
[0] = {java.util.Hashtable$Entry@2556} java.vendor -> Sun Microsystems Inc.
[1] = {java.util.Hashtable$Entry@2564} env.LESSOPEN -> |/usr/bin/lesspipe.sh %s
[2] = {java.util.Hashtable$Entry@2572} sun.java.launcher -> SUN_STANDARD
[3] = {java.util.Hashtable$Entry@2580} sun.managementpiler -> HotSpot 64-Bit Server Compiler
[4] = {java.util.Hashtable$Entry@2588} os.name -> Linux
[5] = {java.uti
l.Hashtable$Entry@2596} sun.boot.class.path -> /usr/xxxxxx/install/jdk1.6.0_11/jre/lib/resources.jar:/usr/xxxxxx/install/jdk1.6.0_11/jre/lib/rt.jar:/usr/xxxxxx/install/jdk1.6.0_11/jre/lib/sunrsasign.jar:/usr/xxxxxx/install/jdk1.6.0_11/jre/lib/jsse.jar:/usr/xxxxxx/
[6] = {java.util.Hashtable$Entry@2604} env.PWD -> /home/admin/new_xiaoxiang/config-maven-plugin
[7] = {java.util.Hashtable$Entry@2612} env.LANG -> en_US.UTF-8
[8] = {java.util.Hashtable$Entry@2620} java.vm.specification.vendor -> Sun Microsystems Inc.
[9] = {java.util.Hashtable$Entry@2628} java.runtime.version -> 1.6.0_11-b03
[10] = {java.util.Hashtable$Entry@2636} env.HISTSIZE -> 1000
[11] = {java.util.Hashtable$Entry@2644} user.name -> admin
[12] = {java.util.Hashtable$Entry@2652} env.JETTY_HOME -> /usr/xxxxxx/jetty
[13] = {java.util.Hashtable$Entry@2660} env.USER -> admin
[14] = {java.util.Hashtable$Entry@2668} env.SHELL -> /bin/bash
[15] = {java.util.Hashtable$Entry@2676} env.SSH_TTY -> /dev/pts/0
[16] = {java.util.Hashtable$Entry@2684} env.NLSPATH -> /usr/dt/lib/nls/msg/%L/%N.cat
[17] = {java.util.Hashtable$Entry@2692} env.PATH -> /usr/xxxxxx/install/subversion-1.6.11/bin:/usr/xxxxxx/jetty/bin:/home/admin/xiaoxiang/apache-maven-2.2.1/bin:/usr/xxxxxx/java/bin:/usr/xxxxxx/ant/bin:/usr/xxxxxx/antx/dist/antx/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/
[18] = {java.util.Hashtable$Entry@2700} user.language -> en
[19] = {java.util.Hashtable$Entry@2708} env.ANTX_HOME -> /usr/xxxxxx/antx/dist/antx
[20] = {java.util.Hashtable$Entry@2716} sun.boot.library.path -> /usr/xxxxxx/install/jdk1.6.0_11/jre/lib/amd64
[21] = {java.util.Hashtable$Entry@2724} f -> /home/admin/xiaoxiang/apache-maven-2.2.1/f
[22] = {java.util.Hashtable$Entry@2732} env.SSH_CONNECTION -> 10.19.20.4 2208 10.20.147.196 22
[23] = {java.util.Hashtable$Entry@2740} com.sun.management.jmxremote.port -> 17188
[24] = {java.util.Hashtable$Entry@2748} java.version -> 1.6.0_11
[25] = {java.util.Hashtable$Entry@2756} env.SSH_CLIENT -> 10.19.20.4 2208 22
[26] = {java.util.Hashtable$Entry@2764} user.timezone -> Asia/Shanghai
[27] = {java.util.Hashtable$Entry@2772} sun.del -> 64
[28] = {java.util.Hashtable$Entry@2780} env.TMOUT -> 6000
[29] = {java.util.Hashtable$Entry@2788} dorsed.dirs -> /usr/xxxxxx/install/jdk1.6.0_11/jre/lib/endorsed
[30] = {java.util.Hashtable$Entry@2796} i.server.randomIDs -> true
[31] = {java.util.Hashtable$Entry@2804} sun.cpu.isalist ->
[32] = {java.util.Hashtable$Entry@2812} ding -> UTF-8
[33] = {java.util.Hashtable$Entry@2820} ding.pkg -> sun.io
[34] = {java.util.Hashtable$Entry@2828} env.SHLVL -> 1
[35] = {java.util.Hashtable$Entry@2836} file.separator -> /
[36] = {java.util.Hashtable$Entry@2844} env.HOSTNAME -> itbu_devel96
[37] = {java.util.Hashtable$Entry@2852} java.specification.name -> Java Platform API Specification
[38] = {java.util.Hashtable$Entry@2860} java.class.versio
n -> 50.0
[39] = {java.util.Hashtable$Entry@2868} untry -> US
[40] = {java.util.Hashtable$Entry@2876} java.home -> /usr/xxxxxx/install/jdk1.6.0_11/jre
[41] = {java.util.Hashtable$Entry@2884} env.REBELDIR -> /home/admin/new_xiaoxiang/common/target/classes,/home/admin/new_xiaoxiang/service/target/classes,/home/admin/new_xiaoxiang/task/target/classes,/home/admin/new_xiaoxiang/web/target/classes,/home/admin/musketeer/common/target/classes,/home/...
[42] = {java.util.Hashtable$Entry@2892} java.vm.info -> mixed mode
[43] = {java.util.Hashtable$Entry@2900} env.LOGNAME -> admin
[44] = {java.util.Hashtable$Entry@2908} os.version -> 2.6.18-131.el5.customxen
[45] = {java.util.Hashtable$Entry@2916} com.sun.management.jmxremote.ssl -> false
[46] = {java.util.Hashtable$Entry@2924} env.G_BROKEN_FILENAMES -> 1
[47] = {java.util.Hashtable$Entry@2932} path.separator -> :
[48] = {java.util.Hashtable$Entry@2940} java.vm.version -> 11.0-b16
[49] = {java.util.Hashtable$Entry@2948} env.JAVA_HOME -> /usr/xxxxxx/java
[50] = {java.util.Hashtable$Entry@2956} java.awt.printerjob -> sun.print.PSPrinterJob
[51] = {java.util.Hashtable$Entry@2964} env.TERM -> linux
[52] = {java.util.Hashtable$Entry@3267} sun.ding -> UnicodeLittle
[53] = {java.util.Hashtable$Entry@3259} com.sun.management.jmxremote.authenticate -> false
[54] = {java.util.Hashtable$Entry@3251} user.home -> /home/admin
[55] = {java.util.Hashtable$Entry@3243} env.OLDPWD -> /home/admin/new_xiaoxiang/config-maven-plugin
[56] = {java.util.Hashtable$Entry@3235} java.specification.vendor -> Sun Microsystems Inc.
[57] = {java.util.Hashtable$Entry@3227} java.library.path -> /usr/xxxxxx/install/jdk1.6.0_11/jre/lib/amd64/server:/usr/xxxxxx/install/jdk1.6.0_11/jre/lib/amd64:/usr/xxxxxx/install/jdk1.6.0_11/jre/../lib/amd64:/usr/java/packages/lib/amd64:/lib:/usr/lib
[58] = {java.util.Hashtable$Entry@3219} java.vendor.url -> java.sun/
[59] = {java.util.Hashtable$Entry@3211} java.vm.vendor -> Sun Microsystems Inc.
[60] = {java.util.Hashtable$Entry@3203} maven.home -> /home/admin/xiaoxiang/apache-maven-2.2.1
[61] = {java.util.Hashtable$Entry@3195} java.runtime.name -> Java(TM) SE Runtime Environment
[62] = {java.util.Hashtable$Entry@3187} java.class.path -> /home/admin/xiaoxiang/apache-maven-2.2.1/boot/classworlds-1.1.jar:/home/admin/new_xiaoxiang/doc/jrebel/jrebel.jar
[63] = {java.util.Hashtable$Entry@3179} env.CVS_RSH -> ssh
[64] = {java.util.Hashtable$Entry@3171} env.XFILESEARCHPATH -> /usr/dt/app-defaults/%L/Dt
[65] = {java.util.Hashtable$Entry@3163} java.vm.specification.name -> Java Virtual Machine Specificat
ion
[66] = {java.util.Hashtable$Entry@3155} rebel.dirs -> /home/admin/new_xiaoxiang/common/target/classes,/home/admin/new_xiaoxiang/service/target/classes,/home/admin/new_xiaoxiang/task/target/classes,/home/admin/new_xiaoxiang/web/target/classes,/home/admin/musketeer/common/target/classes,/
[67] = {java.util.Hashtable$Entry@3147} java.vm.specificati
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论