Maven项目构建规范

一、dependencyManagement
 
  1. Framework相关jar包,统一父pom版本号,内部Module相互之间的应用,都引用${project.2.version},子Module不设置version,集成父pom的版本号,发版framework统一发版本。
 
  2. 通过增加pommgmt项目单独管理第三方依赖包的管理,海鼎内部的jar包版本管理,不通过pommgmt管理。
   business module自行管理。
 
  3.  Business 项目import公共的pommgmt pom文件实现dependencymanagement,
    Framework对应的jar包,不放在pommgmt中管理,而在Business显示声明。
    Framework的jar包间的引用,其版本号依赖于父pom的版本,同时import pommgmt pom文件 。
 
  4. 同一父POM下的所有子Module不配置版本号,集成父pom的版本号,示例:
<project xmlns="http://maven.apache.org/POM/4.0.0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.hd123.zjlh.cntr</groupId>
    <artifactId>zjlh-cntr-server-parent</artifactId>
    <version>2.2.4-SNAPSHOT</version>
  </parent>
  <artifactId>zjlh-cntr-web</artifactId>
  <packaging>war</packaging>
  <name>Web</name>
  <description>Web应用,负责提供最终用户界面。</description>
 
  <dependencies>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>zjlh-cntr-api</artifactId>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>zjlh-cntr-server</artifactId>
      <version>${project.version}</version>
    </dependency>
   </dependencies>
 
二. maven项目的dependencies定义规范:
   1 暂不纠结,每个业务项目定义自己需要的依赖。 framework也定义自己的依赖,可以全量。
 
三、Maven  release版本管理  采用release插件,

  父pom,配置scm,子module不配置scm,但需要使用标准的trunk/tags/branch结构:
<scm>
  <connection>scm:svn:http://hddenv02/svn/zjlh-cntr/src/server/trunk</connection>
  <developerConnection>scm:svn:http://hddenv02/svn/zjlh-cntr/src/server/trunk</developerConnection>
  <url>http://hddenv02/svn/zjlh-cntr/src/server/trunk</url>
</scm>
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <version>2.2.2</version>
  <configuration>
  <checkModificationExcludes>
    <checkModificationExclude>.project</checkModificationExclude>
    <checkModificationExclude>.classpath</checkModificationExclude>
    <checkModificationExclude>derby.log</checkModificationExclude>
  </checkModificationExcludes>
  <tagNameFormat>@{project.version}</tagNameFormat>
  <autoVersionSubmodules>true</autoVersionSubmodules>
  </configuration>
</plugin>

猜你喜欢

转载自www.cnblogs.com/gongnol/p/9667260.html