细小知识点之Maven

来源:互联网 发布:高清解码矩阵 编辑:程序博客网 时间:2024/04/29 17:02

1.dependencyManagement和dependencies的区别

dependencyManagement

Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让所有在子项目中引用一个依赖而不用显式的列出版本号

 

例如在父项目里:

Xml代码  收藏代码
  1. <dependencyManagement>  
  2. <dependencies>  
  3. <dependency>  
  4. <groupId>mysql</groupId>  
  5. <artifactId>mysql-connector-java</artifactId>  
  6. <version>5.1.2</version>  
  7. </dependency>  
  8. ...  
  9. <dependencies>  
  10. </dependencyManagement>  

然后在子项目里就可以添加mysql-connector时可以不指定版本号,例如:

 

Xml代码  收藏代码
  1. <dependencies>  
  2. <dependency>  
  3. <groupId>mysql</groupId>  
  4. <artifactId>mysql-connector-java</artifactId>  
  5. </dependency>  
  6. </dependencies>  

这样做的好处就是:如果有多个子项目都引用同一样依赖,则可以避免在每个使用的子项目里都声明一个版本号,这样当想升级或切换到另一个版本时,只需要在顶层父容器里更新,而不需要一个一个子项目的修改 ;另外如果某个子项目需要另外的一个版本,只需要声明version就可


dependencies

相对于dependencyManagement,所有声明在dependencies里的依赖都会自动引入,并默认被所有的子项目继承



2.在eclipse中打开pom.xml文件会看到打开的窗口中有一个dependency hierarchy选项卡。这个选择卡页面左半部分显示了详细的jar包依赖树。右半部分则是maven将会下载的jar包
3.maven重复类的问题今天maven部署的时候发现了重复类的问题,在dependency hierarchy中搜的时候发现右侧确实有两个同样的jar。
或者使用mvn help:effective-pom命令,可以看到最终起效果的 pom ,会发现完全相同的两个jar
解决办法:
<exclusions>
                <exclusion>
                    <groupId>xxx</groupId>
                    <artifactId>xxx</artifactId>
                </exclusion>
</exclusions>

当然我们也可以在dependency hierarchy选项卡中右半部分直接选中那个低版本的xxx.jar。然后右键exclude maven...点击确定会自动生成上面的。

0 0