POM优化(五)

原创 2012年03月30日 13:24:45
优化POM的步骤
1.依赖上移
 多个子module中共用同一个dependency,可抽取到父POM中。例:一些依赖如spring和hibernate-annotations在多个模块中被声明。每个hibernate依赖都重复排除了javax.transaction。在这些依赖配置被上移之后,我们需要为每个POM移除这些依赖的版本,否则它们会覆盖定义在父项目中的dependencyManagement
父POM:
<dependencyManagement>
 <dependencies>
  <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring</artifactId>
   <version>2.0.7</version>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-annotations</artifactId>
   <version>3.3.0.ga</version>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-commons-annotations</artifactId>
   <version>3.3.0.ga</version>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate</artifactId>
   <version>3.2.5.ga</version>
   <exclusions>
    <exclusion>
     <groupId>javax.transaction</groupId>
     <artifactId>jta</artifactId>
    </exclusion>
   </exclusions>
  </dependency>
 </dependencies>
</dependencyManagement>


子POM:
<project>
 ...
 <dependencies>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-annotations</artifactId>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate</artifactId>
  </dependency>
 </dependencies>
 ...
</project>


如果多于一个项目依赖于一个特定的依赖,你可以在dependencyManagement中列出这个依赖。父POM包含一个版本和一组排除配置,所有的子POM需要使用groupId和artifactId引用这个依赖。如果依赖已经在dependencyManagement中列出,子项目可以忽略版本和排除配置。
2.版本重复修复
 有一些依赖是关联的,共享同样的版本。这种情况通常是因为某个项目的发布版本中包含了多个紧密关联的组件。例如,看一下依赖hibernate-annotations和hibernatecommons-
annotations,两者的版本都是3.3.0.ga,而且我们可以预料这两个依赖的版本只会一起向前改变。hibernate-annotations和hibernate-commons-annotations都是JBoss发布的同一个项目的组件,当有新的版本发布的时候,两个依赖都会改变。
父POM:
<project>
 ...
 <properties>
  <hibernate.annotations.version>3.3.0.ga</hibernate.annotations.version>
 </properties>
 <dependencyManagement>
  ...
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-annotations</artifactId>
   <version>${hibernate.annotations.version}</version>
  </dependency>
  <dependency>
   <groupId>org.hibernate</groupId>
   <artifactId>hibernate-commons-annotations</artifactId>
   <version>${hibernate.annotations.version}</version>
  </dependency>
  ...
 </dependencyManagement>
 ...
</project>


3.兄弟模块依赖和兄弟模块版本的重复(可归类到上述1和2)
4.优化插件
 在顶层POM中使用dependencyManagement片段管理依赖
 

相关文章推荐

maven使用基本功——pom文件优化知多少

一个maven的pom文件优化的简单描述

Maven简介(五)——pom.xml

6       Maven的pom.xml介绍 6.1     简介        pom.xml文件是Maven进行工作的主要配置文件。在这个文件中我们可以配置Maven项目的groupId、a...

maven之Nexus的配置【pom.xml配置<repositories>】(五)

Nexus的配置【pom.xml配置】

Maven的POM.xml详解(五)

本文译自:http://maven.apache.org/pom.html 属性 属性是最后需要理解的POM基础。跟Ant中属性一样,Maven的属性是值的占位符。在一个POM内可以在任何位置...

pom_spark2

  • 2017年11月13日 18:13
  • 7KB
  • 下载

SSM整合jar包+pom.xml文件

  • 2017年09月26日 09:05
  • 29.33MB
  • 下载

Maven配置文件pom.xml详解

什么是POM? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml。在Maven中,当谈到Project的...

maven pom最全配置

  • 2017年09月11日 11:05
  • 30KB
  • 下载

springMvc+spring+MyBatis的Pom文件

  • 2017年06月11日 22:04
  • 2KB
  • 下载

maven的pom介绍及配置(四)

1.什么是pom? pom(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目是如何构建,声明项目依赖,插件配置,仓库配置等等。 2.pom配置 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POM优化(五)
举报原因:
原因补充:

(最多只允许输入30个字)