1、解决冲突、排除并替换一个传递性依赖
<exclusions> <exclusion></exclusion> </exclusions>
例:
Hibernate依赖于Sun JTA API,而后者在中央Maven仓库中不可用,因为它是不能免费分发的。幸运的是,Apache Gernoimo项目创建了一些可以免费分发的独立实现类库。为了用另外的依赖来替换这个传递性依赖,你需要排除这个传递性以依赖,然后在你的项目中再声明一个依赖。
2、依赖管理
<dependencyManagement> </dependencyManagement>
在多模块项目的顶层POM中定义此,在子项目中引用一个依赖而不用显式的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有 dependencyManagement 元素的项目,然后它就会使用在这个dependencyManagement 元素中指定的版本号。例:
3、项目继承
当你继承一个POM,你可以选择直接使用继承的POM信息,或者选择覆盖它。以下是一个Maven POM从它父POM中继承的项目列表:
? 定义符( groupId 和 artifactId 中至少有一个必须被覆盖)
? 依赖
? 开发者和贡献者
? 插件列表
? 报告列表
? 插件执行 (id匹配的执行会被合并)
? 插件配置
当Maven继承依赖的时候,它会将父项目中定义的依赖添加到子项目中。你可以使用Maven的这一特征来指定一些在所有项目被广泛使用的依赖,让它们从顶层POM中继承。
4、依赖归类
可以创建一个特殊的pom项目:groupId(org.sonatype.mavenbook)、artifactId(persistence-deps)、<packaging>pom</packaging>,只声明springmvc+spring+mybatis时用到的jar 其他什么也不做,那当我们使用这组合框架时直接依赖这个项目即可。需要做的只是创建该 pom.xml 并且运行mvn install。由于打包类型是 pom ,这个POM被安装到你的本地仓库。你现在就可以添加这个项目作为一个依赖,所有该项目的依赖就会被添加到你的项目中。
例:
5、生命周期
Maven中有三种标准的生命周期:清理(clean),默认(default)(有时候也称为构建),和站点(site)。
TEST
6、不同环境不同配置 Profile
还可以将profile放到一个profiles.xml文件中
你可以在两个地方定义settings profile:定义在 ~/.m2/settings.xml 中的用户特定settings profile,或者定义在 /usr/local/maven/conf/settings.xml 中的全局settings profile。
7、构建一个套件Building an Assembly
8、定义变量和激活资源过滤(使pom中定义的属性能在resources下的xml文件使用)
例:
在 src/main/resources 中包含一个文件 applicationContact.xml 即可使用
9、配置服务器认证
服务器认证小节可以包含很多认证元素。如果你正使用SCP进行部署,你可能会希望使用公钥认证。为此,不再使用password元素,而是使用 publicKey 和 passphrase 元素。根据服务器的配置,可能你仍然需要配置username元素。
10、下载使用Nexus搭建自己的本地仓库