• 项目规约


    命名规范

    GVA的定义

    定义 GAV 遵从以下规则:

    服务:

    <groupId>org.hzero</groupId>
    <artifactId>hzero-platform</artifactId>
    <version>1.0.0</version>
    

    服务组件:

    <groupId>org.hzero.boot</groupId>
    <artifactId>hzero-boot-common</artifactId>
    <version>1.0.0</version>
    

    通用组件:

    <groupId>org.hzero.starter</groupId>
    <artifactId>hzero-starter-export</artifactId>
    <version>1.0.0</version>
    

    依赖规范

    强制要求

    1. 二方库版本号命名方式:主版本号.次版本号.修订号
    1. 线上应用不要依赖 SNAPSHOT 版本(安全包除外)。
      说明: 不依赖 SNAPSHOT 版本是保证应用发布的幂等性。另外,也可以加快编译时的打包构建。

    2. 二方库的新增或升级,保持除功能点之外的其它 jar 包仲裁结果不变。如果有改变, 必须明确评估和验证, 建议进行 dependency:resolve 前后信息比对,如果仲裁结果完全不一致,那么通过 dependency:tree 命令,找出差异点,进行<excludes>排除 jar 包。

    3. 二方库里可以定义枚举类型,参数可以使用枚举类型,但是接口返回值不允许使用枚举类型或者包含枚举类型的 POJO 对象。

    4. 依赖于一个二方库群时,必须定义一个统一的版本变量,避免版本号不一致。
      说明: 依赖 springframework-core,-context,-beans,它们都是同一个版本,可以定义一个变量来保存版本: ${spring.version},定义依赖的时候,引用该版本。

    5. 禁止在子项目的 pom 依赖中出现相同的 GroupId,相同的 ArtifactId,但是不同的Version。
      说明: 在本地调试时会使用各子项目指定的版本号,但是合并成一个 war,只能有一个版本号出现在最后的 lib 目录中。 可能出现线下调试是正确的,发布到线上却出故障的问题。

    推荐

    1. 所有 pom 文件中的依赖声明放在<dependencies>语句块中,所有版本仲裁放在<dependencyManagement>语句块中。
      说明: <dependencyManagement> 里只是声明版本,并不实现引入,因此子项目需要显式的声明依赖, versionscope 都读取自父 pom。而 <dependencies> 所有声明在主 pom 的<dependencies>里的依赖都会自动引入,并默认被所有的子项目继承。

    2. 二方库不要有配置项,最低限度不要再增加配置项。

    3. 为避免应用二方库的依赖冲突问题,二方库发布者应当遵循以下原则: