有什么方法可以强制 Maven 使用远程工件而不是安装在您机器上的那些?因为我担心运行时错误而不是编译错误,所以构建服务器不是有效选项。
PS 我知道我可以删除或重命名 .m2 文件夹,但我敢打赌有一些更聪明的方法可以做到这一点。也许是一些插件或特殊的命令参数?
有什么方法可以强制 Maven 使用远程工件而不是安装在您机器上的那些?因为我担心运行时错误而不是编译错误,所以构建服务器不是有效选项。
PS 我知道我可以删除或重命名 .m2 文件夹,但我敢打赌有一些更聪明的方法可以做到这一点。也许是一些插件或特殊的命令参数?
没有本地存储库意味着您的类路径几乎完全由远程服务器上的 URL 组成。我不明白为什么会支持这一点,因为执行会很糟糕,并且任何断开的连接都会导致类加载器问题。拥有本地存储库可确保 jar 在编译/执行开始之前可用。
还要考虑到 WAR 和 EAR 项目(以及许多使用依赖插件的项目)依赖下载 jar 来完成它们的打包。如果每次构建时都必须从远程存储库中检索这些内容,将会产生巨大的开销。我很确定中央的经理们不会热衷于处理这种负担。
您可以考虑一些替代方案:
有关 LATEST 和 RELEASE 的更多详细信息,请参阅Maven book 的第 9.3.1.3 节。
如果您使用内部存储库管理器(此处必须引用Nexus和Artifactory),则清除本地存储库的开销会大大降低 - 您只会增加本地网络流量负载。
我不认为真的有办法做你所要求的。您可以根据 SNAPSHOT 版本进行调查(但这意味着将上游项目的版本字符串更改为 SNAPSHOT 版本)。
顺便说一句,这在最近的Java Posse 集 (#268)中有详细讨论。我不认为他们最终得到了解决方案,但你可能会在那里得到一些好主意。
我也喜欢Rich Seller 的一些想法,我会自己研究。