Chr*_*ian 16 snapshot dependency-management pom.xml maven dependency-resolver
假设我有一个A依赖于项目的开发项目B- 该项目目前正在开发中,尚未发布.
所以,在APOM文件中,我有以下部分:
<dependency>
<groupId>com.example</groupId>
<artifactId>project-b</artifactId>
<version>1.0.0-SNAPSHOT</version>
<\dependency>
Run Code Online (Sandbox Code Playgroud)
在工作中,我们有一个远程仓库(Nexus)和一个CI盒(运行Jenkins).
当我的同事改变B并提交给SVN时,Jenkins会选择更改,编译并将其放入远程仓库.大约在那个时候,我可能会B在本地打开,进行更改,编译并将其安装到我的本地仓库中.
B当我尝试mvn clean install A本地时,Maven现在如何解决?
前几天我们弄得一团糟,基本上不得不手动删除本地存储库,以确保我们得到了我们期望获得的版本.所以我现在想弄清楚究竟发生了什么.(因此,如果你有详细文档中的地点的链接,那也将非常感激...)在本地,我有时在我的存储库文件夹中有一些SNAPSHOT版本,一个没有,有几个用什么看起来像SNAPSHOT文件名部分之后的时间戳...
Ger*_*ica 11
您只是mvn install没有得到时间戳的工件.一旦您mvn deploy进入内部/远程存储库,就会应用时间戳.如果你查看maven-metadata-local.xml你的本地~/.m2/repository/B/1.0.0-SNAPSHOT/文件夹,你会看到以下行:
<updated>YYYYMMDDHHMMSS</updated>
Run Code Online (Sandbox Code Playgroud)
这就是Maven依赖项解析器决定最新快照的方式.
如果碰巧您和您的同事在同一秒内部署到您的内部/远程存储库,则由存储库管理器(在您的情况下为Nexus)来处理此问题.
请注意:上面的段落依赖于我对Maven的经验,因为我还没有看到一个文档页面,到目前为止所有细节都有描述.输入在哪里可以找到参考以及添加和更正非常受欢迎.
有关概述,请参阅Maven /存储库简介.
如果您想确保使用最新快照:
声明<updatePolicy>在settings.xml相应:
- updatePolicy:此元素指定更新应尝试发生的频率.Maven会将本地POM的时间戳(存储在存储库的maven-metadata文件中)与远程数据进行比较.选项包括:
always,daily(默认),interval:X(其中X是以分钟为单位的整数)或never.
请参阅设置参考,存储库.
使用-U| --update-snapshots命令行选项.
Run Code Online (Sandbox Code Playgroud)$ mvn -h ... -U,--update-snapshots Forces a check for missing releases and updated snapshots on remote repositories ...
"文件名的SNAPSHOT部分之后的时间戳"对我来说很不寻常.AFAIHS它只是一个或另一个.虽然如果<artifactId>项目的POM中有"-SNAPSHOT",就会发生这种情况.
也可以看看:
存储库 - SNAPSHOT处理,其内容如下:
本文档的目标是Maven 2.0 alpha 1.它仅供历史参考,并且需要更新并集成到Maven文档中.
但到目前为止,我没有找到任何最新的文档.
| 归档时间: |
|
| 查看次数: |
11202 次 |
| 最近记录: |