-
访问github下载源码:
https://github.com/apache/flink.git
注意版本的选择,笔者编译成功选择的是1.11,尝试了1.13和master版本,发现代码里均有些报错,会导致打包失败。
2.相关环境准备
由于flink的源码大部分是基于Java、小部分是基于scala和nodejs,执行编译过程中 最好具备如下环境:
- jdk 1.8 及以上
- maven 3.5.2及以上
- nodejs (也可不装,源码自带),但需要配置node 环境变量
- scala 1.11以上也需要配置环境变量
3.配置maven settings.xml文件。
<?xml version="1.0" encoding="utf-8"?>
<settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!--本地仓库路径-->
<localRepository>F:\repository</localRepository>
<!--注意:mirrorOf千万别为*,建议为profile的id-->
<mirrors>
<mirror>
<id>aliyun-nexus</id>
<name>aliyun-nexus</name>
<mirrorOf>aliyun</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>huawei-nexus</id>
<name>huawei-nexus</name>
<mirrorOf>huawei</mirrorOf>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
<mirror>
<id>confluent-nexus</id>
<name>confluent-nexus</name>
<mirrorOf>confluent</mirrorOf>
<url>https://packages.confluent.io/maven/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>aliyun</id>
<repositories>
<repository>
<id>aliyun-nexus</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>aliyun-nexus</id>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>huawei</id>
<repositories>
<repository>
<id>huawei-nexus</id>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>huawei-nexus</id>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>confluent</id>
<repositories>
<repository>
<id>confluent-nexus</id>
<url>https://packages.confluent.io/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>confluent-nexus</id>
<url>https://packages.confluent.io/maven/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>cdh</id>
<repositories>
<repository>
<id>cdh-nexus</id>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<name>Cloudera Repositories</name>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>cdh-nexus</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>apache</id>
<repositories>
<repository>
<id>apache-nexus</id>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</snapshots>
<name>apache Repositories</name>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>apache-nexus</id>
<url>https://repository.apache.org/content/repositories/snapshots/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<!--设置默认配置文件-->
<activeProfiles>
<activeProfile>aliyun</activeProfile>
</activeProfiles>
</settings>
- 执行命令 mvn clean install -DskipTests -Dfast ,测试代码不能跳过编译,但可跳过执行
5.执行到flink-runtime-web\web-dashboard时,编译会停止不动,如图所示:
此时请打开terminal终端,按照提示执行命令 npm update(配置了nodejs环境变量的前提下) ,执行完后自动进行下一步编译。