项目规范

Posted by Simon Dong on 2018-09-26

项目结构

Maven全局设置

maven的设置文件一般位于<user>/.m2/settings.xml或者<maven_home>/conf/settings.xml。maven的配置文件需要做以下修改:

  1. <mirrors>中加入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <mirror>
    <id>aliyun</id>
    <name>aliyun</name>
    <mirrorOf>external:*,!ws</mirrorOf>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
    <mirror>
    <id>ws</id>
    <name>ws</name>
    <mirrorOf>ws</mirrorOf>
    <url>http://wsbpo.imwork.net/nexus/repository/maven-public</url>
    </mirror>
  2. <profiles> 中加入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <profile>
    <id>ws</id>
    <repositories>
    <repository>
    <id>aliyun</id>
    <name>aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </repository>
    <repository>
    <id>ws</id>
    <name>ws</name>
    <url>http://wsbpo.imwork.net/nexus/repository/maven-public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </repository>
    </repositories>
    <pluginRepositories>
    <pluginRepository>
    <id>aliyun</id>
    <name>aliyun</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </pluginRepository>
    <pluginRepository>
    <id>ws</id>
    <name>ws</name>
    <url>http://wsbpo.imwork.net/nexus/repository/maven-public/</url>
    <releases>
    <enabled>true</enabled>
    </releases>
    <snapshots>
    <enabled>true</enabled>
    </snapshots>
    </pluginRepository>
    </pluginRepositories>
    </profile>
  3. <settings>最后加入

    1
    2
    3
    <activeProfiles>
    <activeProfile>ws</activeProfile>
    </activeProfiles>
  4. 对于需要将项目打包部署到nexus服务器上时,应在settings.xml文件的<servers>中加入

    1
    2
    3
    4
    5
    <server>
    <id>ws</id>
    <username><!--Nexus User--></username>
    <password><!--Nexus Password--></password>
    </server>

    目前TFS服务器上的maven settings已做相应的修改。

项目pom.xml配置

  1. 移除原项目配置中pluto_none相关的<repositories><dependencies>的配置

  2. 对于需要打包发布到nexus服务器的项目,在pluto_none中加入

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <distributionManagement>
    <repository>
    <id>ws</id>
    <name>ws</name>
    <url>http://wsbpo.imwork.net/nexus/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
    <id>ws</id>
    <name>ws</name>
    <url>http://wsbpo.imwork.net/nexus/repository/maven-snapshots/</url>
    </snapshotRepository>
    </distributionManagement>

项目分支规范

  • master: 用于发版,包括SIT/UAT/PROD,

    • 在出发去客户前,将所带的代码生成一个PR,此PR的提交目标分支为master

    • 在客户处合并代码后,将代码合并到此PR上。

    • PR在Review通过并成功合并后,应在master分支上标注tag,如SIT/20180926

      1
      2
      3
      4
      5
      6
      7
      8
      9
      #获取远程服务器上的tag
      git fetch --tags
      #通过下列命令提交tag
      git checkout master
      git reset --hard origin/master
      git tag <tagName>
      git push --tags
      #若tag标注错误
      git push origin --delete tag <tagName>
  • develop: 用于日常开发完成的功能,以PR方式合并到develop分支

  • feature/xxx: 功能分支,用于日常开发。
    • 所有开发人员应将当天完成的代码当天提交
    • 分支的命名以TFS上的work item ID为准,在Queries视图上都有相应的ID。
  • hotfix/xxx: 紧急修复分支。在发版之后,修复仅需要小量更改的Bug,以便客户方能尽快使功能正常运行。
    • hotfix 分支的基是master
    • hotfix分支不但要合并到master分支,同时也应合并到develop分支。