为什么建立flink-avro下载SNAPSHOT flink罐子

时间:2015-09-02 19:19:06

标签: apache-flink

关于建立flink-avro的问题。

我下载了源代码,我可以构建完整的源代码。

但是当我搬到文件夹

flink/flink-staging/flink-avro

并运行命令mvn package因为我想编译并运行测试,它开始下载最新的flink SNAPSHOT罐子。 然而,我从源头建立了相同的罐子,一切都在当地的回购中。

为什么它会下载本地构建的相同内容?

1 个答案:

答案 0 :(得分:1)

您需要先在顶级模块上使用mvn install。这会将构建的jar复制到位于~/.m2/respository/的本地maven存储库中。 mvn package仅构建jar并将它们放在文件夹target中(不会复制到本地maven repo中)。

之后,您可以进入flink-avro并在那里构建(使用mvn packagemvn install - 只要没有其他模块依赖于已构建的jar,{{1}很好)。如果您更改模块A中的某些内容而另一个模块B依赖于A,则需要在模块A中执行mvn package。否则,模块B将无法从A访问新构建的jar。

Maven总是首先在你当地的m2-repository中寻找依赖的罐子。如果它没有找到那里的罐子,它会开始从互联网上下载它们。如果发现" old"在您的本地仓库中的jar,它可能仍然使用它们(取决于您指定的maven更新间隔)。另一方面,即使您在本地构建mvn install,并且在线提供了较新版本,maven也可能会下载较新版本。

最后但并非最不重要的是,有时maven无法正确解析时间戳依赖关系,或者即使您执行mvn install也不会更新本地存储库。清除本地maven存储库(只为相应的jar或整个存储库执行mvn install)可以解决此问题。