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