gpt4 book ai didi

maven - 当本地和远程存储库中存在具有不同时间戳的 SNAPSHOTS 时,Maven 如何解决 SNAPSHOT 依赖关系?

转载 作者:行者123 更新时间:2023-12-03 14:58:57 26 4
gpt4 key购买 nike

假设我有一个项目 A在依赖项目的开发中 B - 目前也在开发中,尚未发布。

所以,在 A的 POM 文件,我有以下部分:

<dependency>
<groupId>com.example</groupId>
<artifactId>project-b</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>

在工作中,我们有一个远程仓库(Nexus)和一个 CI 盒(运行 Jenkins)。

当我的同事对 B 进行更改时并提交到 SVN,Jenkins 将选择该更改,编译它并将其放入远程仓库。大约那个时候,我可能会打开 B在本地,进行更改,编译并将其安装到我的本地存储库中。

Maven 现在如何解析 B当我尝试 mvn clean install A本地?
  • 如果它找到一个,它是否总是默认为我的本地 SNAPSHOT?
  • 它会始终默认为远程 SNAPSHOT 吗?
  • 它会看时间戳吗?
  • 它会做一些不同的事情吗?

  • 前几天我们把自己弄得一团糟,基本上不得不手动删除本地存储库,以确保我们得到我们期望得到的版本。所以我现在试图弄清楚到底发生了什么。 (因此,如果您有指向文档中详细介绍的位置的链接,那也将不胜感激...)在本地,我有时在我的存储库文件夹中有一些 SNAPSHOT 构建,一个没有,一些有什么看起来像 SNAPSHOT 之后的时间戳文件名的一部分...

    最佳答案

    你刚刚的神器mvn install不要得到时间戳。一旦您 mvn deploy 应用时间戳到您的内部/远程存储库。如果您查看 maven-metadata-local.xml在您本地 ~/.m2/repository/B/1.0.0-SNAPSHOT/文件夹,您将看到以下行:

    <updated>YYYYMMDDHHMMSS</updated> 
    这就是 Maven 依赖项解析器决定最新快照是什么的方式。
    如果碰巧您和您的同事在同一秒内部署到您的内部/远程存储库,则由存储库管理器(在您的情况下为 Nexus)来处理此问题。
    请注意:上面的段落依赖于我使用 Maven 的经验,因为到目前为止我还没有看到一个文档页面在所有细节中进行了描述。非常欢迎输入在哪里可以找到引用以及添加和更正。
    Maven / Introduction to Repositories概述。
    如果您想确保使用最新的快照:
  • 声明 <updatePolicy>在您的 settings.xml因此:
    • updatePolicy: This element specifies how often updates should attempt to occur. Maven will compare the local POM’s timestamp (stored in a repository’s maven-metadata file) to the remote. The choices are: always, daily (default), interval:X (where X is an integer in minutes) or never.

    Settings Reference, Repositories .
  • 使用 -U | --update-snapshots命令行选项。
    $ mvn -h
    ...
    -U,--update-snapshots Forces a check for missing
    releases and updated snapshots on
    remote repositories
    ...

    另见 Maven: The Complete Reference, 6.1. Maven Command Line Options, 6.1.11. Downloading and Verifying Dependencies .

  • “文件名的 SNAPSHOT 部分之后的时间戳”对我来说是不寻常的。 AFAIHS 要么只有一个,要么只有另一个。尽管如果 <artifactId> 中有“-SNAPSHOT”可能会发生这种情况在您项目的 POM 中。
    更新
    也可以看看:
  • Repository - SNAPSHOT Handling ,内容如下:

    This documentation was targetted at Maven 2.0 alpha 1. It is here only for historical reference and to be updated and integrated into the Maven documentation.


    但到目前为止,我没有找到任何已集成的最新文档。
  • POM Reference, Dependency Version Requirement Specification
  • Understanding Maven Version Numbers .
  • 关于maven - 当本地和远程存储库中存在具有不同时间戳的 SNAPSHOTS 时,Maven 如何解决 SNAPSHOT 依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32403153/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com