为什么Maven并不总是从theartefactory下载最后一个依赖,从竹子构建?

时间:2011-12-13 12:53:36

标签: maven maven-2 msbuild bamboo

我使用竹子来自动构建我们的模块和maven用于构建工具。 它工作正常,但有时如果我需要增加模块的版本(例如从1.0-SNAPSHOT更改为1.1-SNAPSHOT)

我做了以下事情: 1)在同一目录下的svn存储库中标记1.0-SNAPSHOT版本,但是在标签根目录中。这是出于兼容性原因。 2)创建竹子构建计划,构建标记模块。 3)增加模块的版本,在trunk中。

到目前为止一切顺利。但有时当我构建我的客户端项目时,标记的模块不会从maven下载(即使我可以看到它是用竹子正确构建的)并且它在标记之前使用旧的jar。除此之外,maven并不总是下载最后一个jar,我必须从.m2目录手动删除它或更新模块并在我的机器上手动重建(不使用离线模式)。这是痛苦的屁股,但作为开发人员,我可以做到这一点,但我们的项目也是由管理员构建的,他们不知道如何管理这个,他们有时会部署错误的依赖项目,这会导致麻烦:)。 / p>

所以如果有人知道如何解决这个问题,请告诉我。

2 个答案:

答案 0 :(得分:2)

查看您的settings.xml文件。你会发现这样一个部分:

    <profile>
      <id>FooBar</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>nexus</id>  
          <!-- use a bogus URL as this gets overwritten by the mirror settings -->
          <url>http://central</url>
         <releases>
            <enabled>true</enabled>
             <updatePolicy>daily</updatePolicy>
         </releases>
          <snapshots>
            <enabled>true</enabled>
             <updatePolicy>always</updatePolicy>
         </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus</id>
          <!-- use a bogus URL as this gets overwritten by the mirror settings -->
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>FooBar</activeProfile>
  </activeProfiles>

确保每次在任何地方使用<updatePolicy>always</updatePolicy>而不是使用本地文件。

答案 1 :(得分:2)

在构建客户端应用程序时尝试mvn deploy -U,该应用程序依赖于该模块。 -U参数用于在构建依赖项目时检索最新构建的SNAPSHOT依赖项(不是最新版本,而是最新构建的SNAPSHOT工件),在您的情况下可能是客户端应用程序。