为什么构建 flink-avro 会下载 SNAPSHOT flink jars
why building flink-avro downloads SNAPSHOT flink jars
关于构建 flink-avro 的问题。
我下载了源代码,并且能够构建完整的源代码。
但是当我移动到文件夹时
flink/flink-staging/flink-avro
和 运行 命令 mvn package
因为我想编译和 运行 测试,它开始下载最新的 flink SNAPSHOT jar。
然而,我从源代码构建了相同的罐子,一切都在本地仓库中。
为什么它下载与本地构建的相同的东西?
您需要先在顶级模块上使用 mvn install
。这会将构建的 jar 复制到位于 ~/.m2/respository/
的本地 Maven 存储库中。 mvn package
仅构建 jars 并将它们放入文件夹 target
(不会复制到本地 Maven 存储库)。
之后,您可以进入 flink-avro
并在那里构建(使用 mvn package
或 mvn install
-- 只要没有其他模块依赖于构建的 jar,mvn package
没问题)。如果你在模块 A 中改变了一些东西,而另一个模块 B 依赖于 A,你需要在模块 A 中做 mvn install
。否则,模块 B 无法访问 A 新建的 jar。
Maven 总是首先在您的本地 m2 存储库中查找相关的 jar。如果它在那里没有找到 jar,它就会开始从 Internet 下载它们。如果它在您的本地存储库中找到 "old" 个 jars,它可能仍会使用它们(取决于您指定的 maven 更新间隔)。另一方面,即使您在本地构建 mvn install
,并且网上有更新的版本,maven 也可能会下载更新的版本。
最后但同样重要的是,有时 maven 无法正确解析时间戳依赖项,或者即使您执行 mvn install
也不会更新本地存储库。清除本地 maven 存储库(只需对相应的 jar 或整个存储库执行 rm
)即可解决此问题。
关于构建 flink-avro 的问题。
我下载了源代码,并且能够构建完整的源代码。
但是当我移动到文件夹时
flink/flink-staging/flink-avro
和 运行 命令 mvn package
因为我想编译和 运行 测试,它开始下载最新的 flink SNAPSHOT jar。
然而,我从源代码构建了相同的罐子,一切都在本地仓库中。
为什么它下载与本地构建的相同的东西?
您需要先在顶级模块上使用 mvn install
。这会将构建的 jar 复制到位于 ~/.m2/respository/
的本地 Maven 存储库中。 mvn package
仅构建 jars 并将它们放入文件夹 target
(不会复制到本地 Maven 存储库)。
之后,您可以进入 flink-avro
并在那里构建(使用 mvn package
或 mvn install
-- 只要没有其他模块依赖于构建的 jar,mvn package
没问题)。如果你在模块 A 中改变了一些东西,而另一个模块 B 依赖于 A,你需要在模块 A 中做 mvn install
。否则,模块 B 无法访问 A 新建的 jar。
Maven 总是首先在您的本地 m2 存储库中查找相关的 jar。如果它在那里没有找到 jar,它就会开始从 Internet 下载它们。如果它在您的本地存储库中找到 "old" 个 jars,它可能仍会使用它们(取决于您指定的 maven 更新间隔)。另一方面,即使您在本地构建 mvn install
,并且网上有更新的版本,maven 也可能会下载更新的版本。
最后但同样重要的是,有时 maven 无法正确解析时间戳依赖项,或者即使您执行 mvn install
也不会更新本地存储库。清除本地 maven 存储库(只需对相应的 jar 或整个存储库执行 rm
)即可解决此问题。