网站首页 > 精选教程 正文
flink 官方提供两种创建项目的方式, maven 和 gradle ,同时也提供快速构建项目模板的脚本和命令脚本,但这种方式需要自行修改项目 groupId 和 ArtifactId ,因此,建议使用 idea IDE 创建项目工程,省时省心。
环境要求
开发 flink 程序,官方有个环境配置最低要求:
# 基于maven
maven 3.0.4+
java 8.x+
# gradle
gradle 3.x+
java 8.x+
基于mvn创建项目
mvn 算是 java 包管理的老牌, idea 中默认内置maven插件,我们只需要选择创建的项目类型是基于 maven 类别即可:
首先,创建一个新项目: Create New Project
下一步,选择 maven 项目,并且勾选: Create from archetype 选项(目的是使用 flink 官方提供的项目模板快速生成项目结构)
如果是第一次创建项目,那么则需要添加一个新的模板文件,请选择: Add Archetype 按钮,并把官方提供的模板内容填写完整:
这里需要注意的是 Version 字段,请确认你开发时的 flink 版本和你运行的环境版本是一致的,以免带来不必要的麻烦。
比如:公司的 flink 集群是是基于 1.7.0 版本,而你是基于 1.10.0 开发的代码,那么最终上线肯定会遇到兼容性问题的,所以请注意。
添加好官方的模板后,我们便可以在以下的列表中选择基于该模板来创建项目基本结构:
下一步,配置项目名称,并且取一个唯一的 groupId 名称:
最后,直接下一步选择默认操作完成即可。整个项目目录结构创建完成,如下:
官方默认的会提供两份模板代码文件: BatchJob 和 StreamingJob 模板文件:
BatchJob: 离线批处理文件
StreamingJob: 实时计算处理代码
项目结构升级
当我们基于官方项目模板创建好基础目录结构后,我们还需要对项目结构做一下升级,需要把项目的配置文件按运行环境做一下区分,比如开发环境和线上环境使用的使用不同的配置文件,这里我们基于项目的 resoures/ 目录来实现:
# resoures 目录
.
├── env
│ ├── config.dev.properties
│ └── config.prod.properties
└── config.properties
我们创建了一个 config.properties 文件来配置项目的常用配置数据,如, kafaka 、 redis 等连接配置等。
然后创建一个 env 子目录,并创建两个环境对应的配置文件,我们希望不同的环境当中使用不同的配置。当然,光是创建这些文件,是无法让文件实现自动按照运行环境自动实现文件匹配的,我们还需要配置 pom.xml 文件:
首先,找到 <build> 配置字段,添加文件路径:
<build>
<!-- Loading all ${} -->
<filters>
<filter>src/main/resources/env/config.${env}.properties</filter>
</filters>
<!-- Map ${} into resources -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>
<!-- 省略之后若干行 -->
</build>
上述代码目的是告诉构建工具,在构建的时候需要加载 resoures 目录的配置文件参与构建,并且使用 ${env} 环境变量来决定具体加载的名称。
因此,我们还需要指定 ${env} 的环境变量配置,在 <profiles> 标签下,移除默认的 <profile> 配置内容,新建两份环境配置 dev 和 prod 的 profile 文件配置:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>dev</env>
</properties>
<!-- 省略若干 -->
</profile>
<profile>
<id>prod</id>
<properties>
<env>prod</env>
</properties>
<!-- 省略若干 -->
</profile>
</profiles>
复制代码
如此,当我们运行项目时,可以根据不同的环境选择不同的配置文件,以保证开发和线上环境彻底分开,当然你也可以举一反三的创建测试环境、预上线环境等等。
如何运行?
有了上述环境配置之后,那么如果根据不同环境试运行呢?
一种是基于 idea IDE编辑器:
比较常用的方式,直接在右侧 maven 菜单,选择不同的环境配置 → 然后运行即可:
第二种,命令行工具:
使用命令行方式,在代码编译上线自动化部署时比较常用,直接传参即可:
mvn -Pprod
复制代码
到此为止,整个项目目录创建内容工作结束。感谢大家的阅读,我是:猿谋人,和大家一起盘代码。
猜你喜欢
- 2024-11-03 java的构造方法你知道几种? java的构造方法你知道几种类型
- 2024-11-03 Spring 体系常用项目一览 spring系列
- 2024-11-03 Java互联网架构-项目流程管理(总结)
- 2024-11-03 优秀的 Java 项目代码都是如何分层的?
- 2024-11-03 计算机等级考试辅导:Java类的基本组成和使用单元辅导文档
- 2024-11-03 一篇文章带你了解Java构造方法的定义和重载
- 2024-11-03 Java三大结构是什么?Java程序员进阶知识点
- 2024-11-03 Maven学习总结–使用Maven构建多模块项目
- 2024-11-03 JAVA分布式架构完整知识体系 java分布式入门
- 2024-11-03 Java中的构造方法你了解多少? java中的构造方法你了解多少个字符
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)