2012-01-05 170 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>