关于建立flink-avro的问题。
我下载了源代码,我可以构建完整的源代码。
但是当我搬到文件夹
时flink/flink-staging/flink-avro
并运行命令mvn package
因为我想编译并运行测试,它开始下载最新的flink SNAPSHOT罐子。
然而,我从源头建立了相同的罐子,一切都在当地的回购中。
为什么它会下载本地构建的相同内容?
答案 0 :(得分:1)
您需要先在顶级模块上使用mvn install
。这会将构建的jar复制到位于~/.m2/respository/
的本地maven存储库中。 mvn package
仅构建jar并将它们放在文件夹target
中(不会复制到本地maven repo中)。
之后,您可以进入flink-avro
并在那里构建(使用mvn package
或mvn 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
)可以解决此问题。