代码之家  ›  专栏  ›  技术社区  ›  ant

关于maven的问题

  •  1
  • ant  · 技术社区  · 15 年前

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

    2 回复  |  直到 15 年前
        1
  •  3
  •   Pascal Thivent    15 年前

    为什么maven从存储库下载[快照]依赖项,即使jar存在于我的本地存储库中

    :

    3.3.1.2. SNAPSHOT Versions

    Maven版本可以包含一个字符串 字面意思表示一个项目是 版本包含字符串 将此令牌转换为日期和时间值 世界时)安装或 如果您的项目有 将工件投影到Maven 版本为1.0-20080207-230803-1如果 2008年2月7日下午。其他 换句话说,部署快照时 不是发布软件 组件;你正在释放一个

    你为什么要用这个?快照 版本用于 取决于 取决于快照版本,以及 Maven会定期尝试 运行生成时的存储库。 同样,如果 系统将有一个版本 正式发布。

    作为默认设置,Maven不会 检查远程服务器上的快照版本 存储库。依赖快照 发布时,用户必须显式启用 下载快照的能力 使用 repository pluginRepository POM中的元素。

    解析快照上的所有依赖项 版本。如果项目依赖于 快照,它不像 依赖关系可能会随着时间的推移而改变。 Maven存储库,如 http://repo1.maven.org/maven2 不能 取决于快照版本,如 从中央存储库禁用。 只是。

    真正地 想要改变这种行为,你可以改变 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>
    

    切换到 never 将强制您使用手动更新(使用 mvn -U ). 但请注意,这通常不是人们想要和期望的快照。

    记录在案,Maven 3有一个 -nsu, --no-snapshot-updates 抑制快照更新

        2
  •  0
  •   Russ Hayward    15 年前

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

    mvn install:install-file 
        -Dfile=[FILE]
        -DgroupId=[GROUP]
        -DartifactId=[ARTIFACT]
        -Dversion=[VERSION]
        -Dpackaging=jar 
        -DgeneratePom=true
        -DcreateChecksum=true   
    

    推荐文章