2012-01-05 174 views
5

这很可能被要求之前(提前所以道歉,如果它已经 - 我只是还没有找到正确的问题呢!)Maven的:本地与远程仓库

我工作的一个项目两个Maven仓库:本地仓库(在我的机器上)和内部仓库(在中央服务器上)。有不少项目正在踢脚线,还有一个父项目使用了所有这些项目。当我们完成特定项目的工作时,我们将其安装到中央存储库供其他人使用。

当我建立本地测试父项目,我想使用最先进的每个项目的最新版本:

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

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

+0

(1)您是如何配置存储库(提供您的pom的相关部分)的。 (2)提供'mvn -X'相关日志条目,显示Maven首先尝试你的中央存储库,然后尝试内部。 – 2012-01-05 17:34:21

回答

1

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

当然,你需要有已经在你的settings.xml配置正确(也许你应该告诉我们。)

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>