【问题标题】:To download jar file to local .m2 repository using settings.xml使用 settings.xml 将 jar 文件下载到本地 .m2 存储库
【发布时间】:2009-12-16 13:00:00
【问题描述】:

我有一个远程存储库,它在 5 小时内更新 jar 一次而不更改版本号。Pom 文件无法更新,因为版本相同。每次我需要手动删除。有什么办法可以得到使用 settings.xml 的最新文件。

【问题讨论】:

    标签: maven-2


    【解决方案1】:

    您控制这个远程存储库吗?如果是,则使用“-SNAPSHOT”版本号。

    或者要求控制存储库的人这样做。这是告诉 Maven 依赖项处于不断变化状态的正确方法。

    如果您不能/不愿意这样做,请为自己编写一个批处理/shell 脚本来调用 Maven,该脚本会事先删除该文件。

    【讨论】:

      【解决方案2】:

      我有一个远程存储库,它在 5 小时内更新一次 jar,而不更改版本号。 Pom 文件无法更新,因为版本相同。每次我都需要手动删除。有什么方法可以让我使用settings.xml 获取最新文件。

      不,没有办法做到这一点。一旦下载了具有固定版本(而不是 SNAPSHOT)的工件,它将不会再次下载,除非您将其从本地存储库中删除。实际上,在不更改其固定版本号的情况下重新发布 jar 是一种 EVIL 做法,必须避免。这不是 maven 的工作方式,并且在执行此操作时,无法预测人们真正使用的是哪个版本(不要求他们从本地存储库中显式删除 jar,这是一种非常薄弱的​​做法),这将导致不可预测的结果。

      处理频繁发布的正确方法是更改​​版本号(并相应地更新 POM)或使用 SNAPSHOT 版本,这是开发过程中常用的方法。根据定义,如果远程存储库中提供了更新的版本,则将下载 SNAPSHOT 版本。这就是您要寻找的东西,这是管理这种情况的专家方法。更多关于SNAPSHOT的详情,请参见Maven: The Definitive Guide9.3.1.2. SNAPSHOT Versions章节。

      【讨论】:

        【解决方案3】:

        您可以在 settings.xml 中为存储库设置元素 updatePolicyalways

        <profiles>
          <profile>
            <id>default</id>
            <repositories>
              <repository>
                <releases>
                  <enabled>true</enabled>
                </releases>
                <snapshots>
                  <enabled>true</enabled>
                  <updatePolicy>always</updatePolicy>
                </snapshots>
                <id>snapshots.jboss.org</id>
                <name>Snapshot JBoss Repository for Maven</name>
                <url>http://snapshots.jboss.org/maven2/</url>
                <layout>default</layout>
              </repository>
            </repositories>
          </profile>
        </profiles>
        

        【讨论】:

          猜你喜欢
          • 2014-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-04
          • 1970-01-01
          • 2013-06-06
          • 2016-09-03
          • 2013-11-23
          相关资源
          最近更新 更多