Maven 2 关于maven的问题
为什么maven要从存储库下载依赖项,即使jar存在于我的本地存储库中(一个原因可能是jar没有pom),除了使用-o选项外,有没有办法绕过它?您可以通过手动安装文件在本地存储库中生成pom:Maven 2 关于maven的问题,maven-2,Maven 2,为什么maven要从存储库下载依赖项,即使jar存在于我的本地存储库中(一个原因可能是jar没有pom),除了使用-o选项外,有没有办法绕过它?您可以通过手动安装文件在本地存储库中生成pom: mvn install:install-file -Dfile=[FILE] -DgroupId=[GROUP] -DartifactId=[ARTIFACT] -Dversion=[VERSION] -Dpackaging=jar -Dgenerate
mvn install:install-file
-Dfile=[FILE]
-DgroupId=[GROUP]
-DartifactId=[ARTIFACT]
-Dversion=[VERSION]
-Dpackaging=jar
-DgeneratePom=true
-DcreateChecksum=true
编辑:您不希望对快照执行此操作
为什么maven从存储库下载[SNAPSHOT]依赖项,即使jar存在于我的本地存储库中
因为这是snapshot依赖项的预期行为。与固定版本不同,Maven会定期尝试下载给定快照的最新版本。当你依赖于一个正在积极开发的项目时,这是非常有用的。从Maven参考中:
Maven版本可以包含一个字符串
字面意思表示一个项目是
目前正在积极开发中。如果
版本包含该字符串
“快照”,然后Maven将展开
此令牌的日期和时间值
转换为UTC(协调)
(通用时间)当您安装或
释放此组件。例如
如果您的项目有
“1.0-SNAPSHOT”并部署此
将项目的工件提交给Maven
存储库,Maven将扩展此功能
版本为“1.0-20080207-230803-1”,如果
您将在11:08部署一个版本
UTC 2008年2月7日下午。换句话说
换句话说,当您部署快照时
没有发布软件
组成部分;你正在发布一个
特定位置组件的快照
时间
你为什么要用这个?快照
版本用于下的项目
积极发展。如果你的项目
取决于以下软件组件:
正在积极开发中,您可以
取决于快照版本,以及
Maven将定期尝试
从中下载最新的快照
当运行生成时,存储库。
同样,如果
系统将有一个版本
“1.4”,您的项目将具有
版本“1.4-SNAPSHOT”,直到
正式发布
作为默认设置,Maven不会
检查远程服务器上的快照发布
存储库。依赖快照
发布时,用户必须显式启用
下载快照的能力
使用存储库
或插件存储库
POM中的元素
发布项目时,您应该
解析快照上的所有依赖项
已发布的依赖项的版本
版本。如果项目依赖于
快照,它不如
依赖关系可能会随着时间的推移而改变。
发布到非快照的工件
Maven存储库,例如
不能
取决于快照版本,如
Maven的超级POM有snapshot的
从中央存储库中禁用。
快照版本用于开发
只是
如果确实要更改此行为,可以更改启用快照的存储库的updatePolicy
:
<repositories>
<repository>
<id>my-repo</id>
<name>My Corporate Repository</name>
<url>http://repo.mycompany.com/maven2</url>
<layout>default</layout>
...
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
我的回购协议
我的公司存储库
http://repo.mycompany.com/maven2
违约
...
真的
从未
失败
切换到never
将强制您使用手动更新(使用mvn-U
)。但是要注意,这通常不是人们想要的,也不是人们对快照的期望
作为记录,Maven 3有一个-nsu,--no snapshot updates
命令行选项,允许抑制快照更新
另见
- 在POM参考中
-nsu
可能无法按预期工作: