This is the doc for Zeppelin developers who want to work on flink interpreter.
Flink interpreter is more complex than other interpreter (such as jdbc, shell). Currently, it has the following modules clustered into two groups:
flink-shims
flink1.15-shims
flink1.16-shims
flink1.17-shims
flink-scala-2.12
The modules in the first group are to adapt different flink versions because there're some api changes between different versions of flink. flink-shims is parent module for other shims modules. At runtime Flink interpreter will load the FlinkShims based on the current flink versions (See FlinkShims#loadShims).
The modules in the second group are to adapt different scala versions. But since flink 1.15, it only supports Scala 2.12, thus there is only one module flink-scala-2.12
Take FlinkInterpreterTest as an example, you need to specify environment variables FLINK_HOME, FLINK_CONF_DIR, ZEPPELIN_HOME. See maven-surefire-plugin in pom.xml for more details