Maven 2 关于maven的问题

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

为什么maven要从存储库下载依赖项,即使jar存在于我的本地存储库中(一个原因可能是jar没有pom),除了使用-o选项外,有没有办法绕过它?

您可以通过手动安装文件在本地存储库中生成pom:

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参考中

它们是快照依赖项吗?tnx,maven 3是什么时候出现的out@c0mrade:Maven 3现在已经有几个月了,但还不是最终版本(不过对我来说还不错)。顺便说一句,请随时向上投票:)对于那些使用Maven 3的人,
-nsu
可能无法按预期工作: