一:常用命令:
清空:mvn clean
编译:mvn compile
打包:mvn package
打包并安装到本地仓库: mvn install
打包并部署到远程仓库: mvn deploy
只打包不测试:mvn -Dtest package
mvn -Dmaven.test.skip=true package
snapshots包强制更新: mvn package -u
传递参数:mvn package -DskipUserTest=true
分析项目的依赖信息:mvn dependency:analyze 或 mvn dependency:tree
清除eclipse系统设置:mvn eclipse:clean
生成eclipse项目文件: mvn eclipse:eclipse
清除idea系统设置:mvn idea:clean
生成idea项目:mvn idea:idea
离线打包: mvn package -o
下载项目里所依赖的jar包的源码:mvn dependency:sources
二: 配置文件
- setting.xml:
- pom.xml:本地pom文件
- pom-4.0.0.xml :超级pom文件
三者关系:
setting.xml中的repositories用于下载
pom.xml中的用于上传,上传用到的用户名和密码要保存在setting.xml中
setting.xml和pom.xml中的central可以覆盖超级pom文件
文件地址
apache-maven-2.2.1\lib\maven-2.2.1-uber\org\apache\maven\project\pom-4.0.0.xml
apache-maven-2.2.1\conf\setting.xml
maven坐标是通过一些元素定义的,而classifier是不能直接定义的。
(1).groupId,定义当前maven项目隶属的实际项目。
(2).artifactId,定义实际项目中的一个maven项目(模块)
(3).version,定义maven当前所处的版本。
(4).packaging,定义maven项目的打包方式。
其中:依赖范围:
maven依赖调解的两个原则。
第一原则是:路径最近者优先。
第二原则是:第一声明者优先。
三:profile配置
Profile 的作用是允许你在项目文件(pom.xml)里定义若干个 profile 段,然后在编译时选择其中的一个用于覆盖项目文件原先的定义。
在编译项目时,可以使用 -P 参数指定需要使用的 profile 的 id,假如不指定 -P 参数的话,则会使用 activeByDefault=true 的一项。filtering替换:
filtering功能主要用来替换项目中的资源文件(.xml、.properties)当中的${...}spring的property-placeholder替换:
指spring容器执行后替换资源文件(*.xml)当中的${...}
四:maven 与仓库
一:仓库分类:
1.本地仓库:
2.远程仓库:中央仓库 私服 其它公共库
3.中央仓库id=central,可以被盖;
二:nexus仓库实现:
nexus的仓库类型分为以下四种:
1.group: 仓库组 --虚库:组合其它仓库
2.hosted:宿主 --Releases Snapshots
3.proxy:代理 --代理远程公共仓库http://repo1.maven.org/maven2
4.virtual:虚拟 --虚库:link到其实(非group)仓库
nexus内置仓库
- Public Repositories:将其它仓库聚合并通过一致的地址提供服务
- Central: 用来代理maven中央仓库中发布版本构件的仓库
- Releases: 用来部署管理内部的发布版本构件的宿主类型仓库
- Snapshots:用来部署管理内部的快照版本构件的宿主类型仓库
五:插件
一:常用插件:
1.maven-surefire-plugin 与 testNG
testNG 比JUnit 的优势:支持测试组
使用方式
@Test(groups={"util","midium"})
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20</version>
<configuration>
<groups>util,midium</groups>
</configuration>
</plugin>
官方使用说明:
http://maven.apache.org/surefire/maven-surefire-plugin/examples/skipping-tests.html
2.versions-maven-plugin
http://www.mojohaus.org/versions-maven-plugin/examples/use-releases.html
二.自定义插件:
统计代码行:maven-loc-plugin: https://github.com/lesline/maven-loc-plugin
替换pom内容: maven-loc-plugin: https://github.com/lesline/maven-pom-plugin
使用命令:
mvn com.juvenxu.mvnbook:maven-loc-plugin:0.0.1-SNAPSHOT:count
mvn com.eloancn:maven-pom-plugin:0.0.5:release
可选方案:
1、dependencyManagement 中 加dependency时 type=import ,可以引入相同的配置
2、mvn clean deploy -pl center-acct-api:只deploy center-acct-api
3、maven-surefire-plugin 与 testNG