Maven:本地与远程存储库

时间:2012-01-05 16:32:16

标签: maven

之前可能已经提出过这个问题(如果有问题,请提前道歉 - 我还没有找到正确的问题!)

我正在开发一个带有两个Maven存储库的项目:一个是本地的(在我的机器上)和一个内部的(在中央服务器上)。有很多项目正在开展,还有一个项目使用了所有项目。当我们完成特定项目的工作时,我们将其安装到中央存储库以供其他人使用。

当我为本地测试构建父项目时,我想使用每个项目的最新版本:

  • 如果有人更新了中央存储库中的项目,我想使用那个
  • 如果我在本地更改了项目并将其安装到我的本地存储库中,我希望覆盖集中式项目。

我所看到的是构建完全忽略了我的本地存储库,只是抓住了内部存储库中的所有内容。我错过了某个明显的设置吗?或者这只是事情的运作方式?

2 个答案:

答案 0 :(得分:2)

mvn -o会将您带入离线模式,因此无需下载任何内容。

或者在settings.xml中,将更新策略设置为不总是用于快照或版本。 See here及以下相关部分

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                      http://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <profiles>
    <profile>
      ...
      <repositories>
        <repository>
          <id>codehausSnapshots</id>
          <name>Codehaus Snapshots</name>
          <releases>
            <enabled>false</enabled>
            <updatePolicy>always</updatePolicy> 
            <checksumPolicy>warn</checksumPolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
          </snapshots>
          <url>http://snapshots.maven.codehaus.org/maven2</url>
          <layout>default</layout>
        </repository>
      </repositories>
      <pluginRepositories>
        ...
      </pluginRepositories>
      ...
    </profile>
  </profiles>
  ...
</settings>

答案 1 :(得分:1)

您必须确保使用-SNAPSHOT版本。然后它将比较本地和远程并使用最新的。

当然你需要在settings.xml中正确配置它(也许你应该告诉我们......)