生成一个web的maven项目:web
mvn archetype:create -DgroupId=com -DartifactId=simple-web -DarchetypeArtifactId=maven-archetype-webapp -DarchetypeCatalog=local缓存
-DarchetypeCatalog表示使用本地缓存的catalog,不用每次生成的时候都去查询。网络
上面能够出现the defined artifact is not an archetype的错误,这个错误能够经过一、删除本地库,二、删除其它的mirror,只使用maven的库。从新生成便可。app
使用对应的profile来构建:webapp
mvn install -PprofileNamemaven
调试测试用例:测试
mvn -Dmaven.surefire.debug test
RESTService,webservice jax-rs的实现,里面包含了deploy方法。spa
surefire plugin运行测试用例失败时候打印Stack trace:debug
mvn test -Dsurefire.useFile=false
forkMode可让第个Test使用不一样的ClassLoader,这样可使得一些依赖于系统属性的常量值在不一样的Test中获得不一样的设置调试
forkMode 可设置值有 “never”, “once”, “always” 和 “pertest”
-DinteractiveMode=false 非交互模式
surefire测试指定类
>mvn test -Dtest=[ClassName] 运行测试类中指定的方法:(这个须要maven-surefire-plugin:2.7.3以上版本才能支持) >mvn test -Dtest=[ClassName]#[MethodName] //[MethodName]为要运行的方法名,支持*通配符,范例: >mvn test -Dtest=MyClassTest#test1 >mvn test -Dtest=MyClassTest#*test*
以离线模式运行,这样子maven就不会去尝试更新/检查本地库了,在私服没有启动等状况下能够节省网络访问上消耗的时间:
maven clean install --offline
简单地用 dependency:tree每每并不能查看到全部的传递依赖。不过若是你真的想要看全部的,必须得加一个 -Dverbose参数,这时就一定是最全的了。
今天修改了一会儿module的依赖时候,构建项目的时出现dependencies.dependency.version for xxx is missing, transitive dependencies will be ignore。致使另外一下工程打包时候相关的依赖没有打进来,(even though the dependency is already declared in its parent's pom file's dependency management section)即便parent pom已经含有相关<dependency>的version,但貌似没有生效,后面在stackoverflow查找到了相关问题,发现parent pom没有安装到本地库引发的。
2017-10-24: 今天在技术交流群里面看到一个maven解决依赖版本冲突的问题,特意复习了一下maven解决版本冲突的方式:
maven解决版本冲突主要是两个原则。