Flink Job 的开发中,需要在同一个工程内完成多 module,多环境的打包,通过一个代码库生成多种不同的 Artifact。经过探索,通过 Maven 实现了该需求。
为应对多环境的需求,需要按照一定的规则组织资源文件(resources),如下图所示:

(资源文件路径示例图)
需要注意以下几点:
需要在 pom.xml 文件中的
- <build>
-
- <finalName>${project.name}.${env}finalName>
- <resources>
- <resource>
-
- <directory>src/main/resourcesdirectory>
- resource>
- <resource>
-
- <directory>src/main/env/${env}directory>
- resource>
- resources>
- build>
需要注意以下几点:
mvn clean package -pl helloworld -am -D env=local
-pl(--projects)
选项后可跟随 {groupId}:{artifactId} 或者所选模块的相对路径(多个模块以逗号分隔),此处传入的参数 helloworld 为指定生成 Artifact 的 module 名字,可指定多个,用 ‘,’ 间隔。
-am(--also-make)
同时处理选定模块所依赖的模块。
-D(--define)
表示 Properties 属性,可在 pom.xml 中定义变量,并通过此处传入的参数进行插值。此处的 env 是 pom.xml 中定义的用来指定环境的变量。可传入多个参数,用多个 -D 来指定。
执行命令后生成的 Artifact 为 helloworld.local.jar:

Jar 内部包含的资源如下:

程序读取 conf.txt 中包含的环境相关的信息后,进行输出,如下:
