SNAPSHOT和RELEASE版本未在Maven Local Repository上进行更新

时间:2014-11-19 11:38:58

标签: java maven build nexus release-management

我已经建立了一个Nexus存储库来连接两个独立的项目。我正在Nexus上成功构建和部署RELEASE和SNAPSHOT版本,但是当我尝试使用maven update在其他项目中使用这些更改时,这些更改没有得到更新。

所以我在一个项目中的A_Project.jar中做了什么,它在nexus存储库中得到了更新。

但是当我试图在B_Project上获得这个更新的jar时,我得到了maven本地存储库中的旧jar。现在,如果我手动删除A_Project.jar,我显然会获得更新的代码。

为了实现SNAPSHOT和RELEASED版本的更新版本,我尝试了以下方法。

  1. 我使用了-U和mvn clean build。
  2. 我已在settings.xml和pom.xml中更改了更新策略,如下所示。
  3. 在settings.xml中

           <pluginRepository>
                <id>deployment</id>
                <name>Internal Nexus Repository</name>
                <url>http://server/nexus/content/groups/public/</url>
                <layout>default</layout>
                <snapshots>
                    <enabled>true</enabled>
                </snapshots>
                <releases>
                    <updatePolicy>always</updatePolicy>
                </releases>
            </pluginRepository>
    

    在pom.xml中

    <repositories>
        <repository>
            <id>snapshots</id>
            <url>http://server/nexus/content/repositories/snapshots</url>
            <snapshots>
                <updatePolicy>always</updatePolicy>
            </snapshots>
            <releases>
                <updatePolicy>always</updatePolicy>
            </releases>
        </repository>
    </repositories>
    

    请帮助,因为这将成为我获取最新罐子的重复过程。

1 个答案:

答案 0 :(得分:2)

我无法看到足够的settings.xml来说明发生了什么。你所展示的只是pluginRepository部分,它用于解决Maven插件,而不是工件。

我建议从标准的settings.xml文件开始:

http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html

您可能希望修改中央存储库定义以始终查找快照更新:

  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

听起来您还试图重新发布相同的发行版本?这是一种不好的做法,版本应该被认为是不可变的(许多工具链都假设它们是)。增加版本号以生成新版本。