繁体   English   中英

如何确保Maven使用依赖项之一使用的适当快照版本?

[英]How can I ensure Maven uses the appropriate snapshot version used by one of my dependencies?

项目“ P”依赖于项目“ X”的最新版本。 X依赖于jar“ A”版本最新。

当我构建项目P时,它将拉下当前是jar的X的正确(最新)版本。 但是,当它尝试构建X时,我假设Maven将意识到X依赖于jar A,并将尝试获取A。

我要在构建P时强制执行该操作,即获取和构建X会拉低X自身发布到存储库时X使用的A版本。 我不想删除A的最新版本,该版本可能比X将自身发布到存储库的时间新。

我在想有多种方法可以解决这种情况。 我感觉将X构建为.war是其中之一。 (我拥有对项目X的控制权,并且可以根据需要将其构建为.war),但是我很高兴听到其他建议。 如果X是.war并具有在构建.war时使用的A版本,那么在P试图构建时,Maven是否会尝试检查是否存在A的较新版本?

如果X没有锁定它所依赖的A版本,那么您无需进一步消除歧义,它将在中央使用绝对最新的A版本。 您可以自己明确指定A的版本,但是没有诸如“使用以前的最新A”之类的东西。

由于您说您拥有对项目X的控制权,因此您应该发布X的新版本,该版本指定了所需的A的确切版本。 Maven中的快照依赖关系是一个严重的反模式。

快照的整个概念都围绕时间戳。 因此,如果在构建时有可用的新快照版本,则将下载该快照版本。 唯一的选择是在离线模式下构建,但我不建议这样做。

另一种方法是,您可以在工作空间中包含所有依赖项目,并在主项目中添加这些项目的依赖关系。 现在,maven将不会下载这些jar文件,它将引用这些项目中的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM