开发指南


为了解决多环境 maven 依赖无法区分的问题,自 2.0.0-RELEASE 版本开始,使用以下方案进行依赖管理

请务必同步修改jenkins、shell、docker部署脚本

1. 配置maven私服仓库

详情请看 maven私服 配置私服仓库。

2. 为项目引入依赖

  • 引入父级依赖 ofa-dependencies,当前最新版本为:2.0.0-RELEASE

<parent>
    <artifactId>ofa-dependencies</artifactId>
    <groupId>cn.com.tcc.ofa</groupId>
    <version>2.0.0-RELEASE</version>
    <relativePath/>
</parent>
  • 引入 ofa-common,version设置为 ${tcc.version}

    <dependencies>
        <dependency>
            <groupId>cn.com.tcc.ofa</groupId>
            <artifactId>ofa-common</artifactId>
            <version>${tcc.version}</version>
        </dependency>
        ....项目的其他依赖....
    </dependencies>
  • 设置项目自身 version

    当项目自身想管理版本号时,可以自行设置版本号,拼接**${tcc.active} **

    如:

    <groupId>cn.com.tcc.ofa</groupId>
    <artifactId>ofa-admin</artifactId>
    <version>2.0.3-${tcc.active}</version>
    

    当项目自身不想管理版本时,可以将项目自身的version也设置成 ${tcc.version} 如:

<groupId>cn.com.tcc.ofa</groupId>
<artifactId>ofa-admin</artifactId>
<version>${tcc.version}</version>

${tcc.version} 和**${tcc.active} **参数控制的版本号,打包文件名将会动态改变,详情请看下方 项目打包说明

3. 项目打包说明

ofa-dependencies 中已经预设了4个 profile,分别为 dev, test, release, prod

在编译过程中,请使用以下命令进行 maven 打包:

mvn clean package -U -P此处替换成profile名称 -DskipTests

例:

mvn clean package -U -Pdev -DskipTests

-Pdev 之间没有空格
-P 参数用于指定profile
-U 参数用于开启强制拉取最新依赖

注:该profile变量 git 中的分支,也 spring.profiles.active参数 ,仅用于编译使用

根据不同的 profile 打包出的名称会不一样,格式如下:

应用名-版本号-后缀

以下为 2.0.0 版本下的各profile打包实例名称

dev: 应用名-2.0.0-SNAPSHOT
test: 应用名-2.0.0-TEST-SNAPSHOT
release: 应用名-2.0.0-RELEASE
prod: 应用名-2.0.0-RELEASE

由于打包后的jar文件为动态文件名,请注意修改原有的jenkins、shell、docker部署脚本
由于打包后的jar文件为动态文件名,请注意修改原有的jenkins、shell、docker部署脚本
由于打包后的jar文件为动态文件名,请注意修改原有的jenkins、shell、docker部署脚本

4. 其他说明

  • 开发时可通过 IDEA 中的 Maven 模块自行选择 profile 进行环境切换,默认 profile 为 dev
  • 如需在profile中增加自己的参数,可在pom文件中自行添加,以下为示例:
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env.param>这是dev环境的配置</env.param>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env.param>这是test环境的配置</env.param>
            </properties>
        </profile>
    </profiles>
  • 以下为一个完整的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
    <parent>
        <artifactId>ofa-dependencies</artifactId>
        <groupId>cn.com.tcc.ofa</groupId>
        <version>2.0.0-RELEASE</version>
        <relativePath/>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <groupId>cn.com.tcc.ofa</groupId>
    <artifactId>ofa-example</artifactId>
    <version>${tcc.version}</version>


    <dependencies>
        <dependency>
            <groupId>cn.com.tcc.ofa</groupId>
            <artifactId>ofa-common</artifactId>
            <version>${tcc.version}</version>
        </dependency>

    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>