0
  1. 假设有一个引用库快照版本的项目,例如library:1.0.0-SNAPSHOT.
  2. 在本地构建项目,导致 Maven 拉library:1.0.0-SNAPSHOT入其本地缓存。
  3. library:1.0.0-SNAPSHOT从 Nexus(或您选择的工件存储)中清除,可能通过mvn releaseing 库。
  4. 再次在本地构建项目,也许--update-snapshots-它成功了

这里的问题是:当清除远程快照时,如何使 Maven在本地失败构建?

我想在持续集成系统中实现这一壮举,这意味着要求我在构建之前清除整个本地缓存的解决方案是不可能的。也不可能内省项目的 POM 并在构建之前从本地缓存中手术删除工件。

注意:我已向 Maven 提交了#MNG-5245,希望在缺少此功能时加快创建此功能。因此,如果您发现此错误报告,请抵制将其用作答案的诱惑。

4

3 回答 3

1

不,Maven 不支持这个。我也无法想象它会成为正确解决方案的问题。我建议您问另一个问题并解释您要完成的工作。您可能会发现有更好的方法可以到达那里。

于 2013-02-20T00:34:31.247 回答
1

我能想到的最接近的是,在本地构建之前,首先对本地存储库中的快照进行本地存储库清除。

http://maven.apache.org/plugins/maven-dependency-plugin/purge-local-repository-mojo.html

您“成功”构建的原因是因为 Maven 实际上可以在您的本地存储库中找到相应的快照工件。由于 Maven 没有“陈旧”的工件概念,所有本地存储的工件实际上都是有效的(包括快照)。您能做的最好的事情是确保您的本地存储库中没有快照工件,并强制 Maven 从您的远程存储库下载。但是,只有从远程仓库下载所有依赖项时它才有效。

于 2013-02-20T01:45:57.457 回答
1

Maven 依赖插件有一个清除本地存储库目标,可以配置为从本地存储库中删除特定工件。如果您在托管 CI 服务的同一台服务器上进行发布构建(以及因此需要清除的本地存储库),您可能能够将执行添加dependency:purge-local-repository到由 Maven 发布插件在release:perform.

请注意,这对清除单个开发机器上的本地存储库没有任何作用。

于 2013-02-20T14:24:18.907 回答