2013-10-04 151 views
7

我的Maven配置有一個小問題。所有其他問題和答案都沒有解決我的問題,所以我開始提出一個新問題。Maven不使用本地存儲庫

我的問題是,我的Maven沒有使用本地存儲庫。它總是從遠程存儲庫中獲取工件。

當一個工件被下載或當我建立一個項目時,它被安裝在本地倉庫中,所以路徑是正確的。

問題是:當我構建一個SNAPSHOT項目時,它只安裝在本地存儲庫中(應該是這樣的,不希望每次都在我的連接上發佈它)。當我在pom.xml中構建另一個具有前一個依賴項目的項目時,maven想要從nexus服務器下載它沒有找到它的項目,而不是從本地存儲庫中取得項目。

這是我的Maven的配置:

<?xml version="1.0" encoding="UTF-8"?> 
<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"> 
    <localRepository>C:\Users\Marc\.m2\repository</localRepository> 
    <interactiveMode>false</interactiveMode> 
    <usePluginRegistry>false</usePluginRegistry> 
    <pluginGroups> 
    </pluginGroups> 
    <servers> 
    <server> 
     <id>releases</id> 
     <username>MY_USERNAME</username> 
     <password>MY_PASSWORD</password> 
     <filePermissions>664</filePermissions> 
     <directoryPermissions>775</directoryPermissions> 
    </server> 
    <server> 
     <id>snapshots</id> 
     <username>MY_USERNAME</username> 
     <password>MY_PASSWORD</password> 
     <filePermissions>664</filePermissions> 
     <directoryPermissions>775</directoryPermissions> 
    </server> 
    <server> 
     <id>nexus</id> 
     <username>MY_USERNAME</username> 
     <password>MY_PASSWORD</password> 
     <filePermissions>664</filePermissions> 
     <directoryPermissions>775</directoryPermissions> 
    </server> 
    </servers> 
    <profiles> 
    <profile> 
     <id>nexussrv</id> 
     <repositories> 
     <repository> 
      <id>snapshots</id> 
      <url>http://nexus/content/repositories/snapshots</url> 
      <snapshots> 
      <enabled>true</enabled> 
      <updatePolicy>always</updatePolicy> 
      </snapshots> 
      <releases> 
      <enabled>false</enabled> 
      </releases> 
     </repository> 
     <repository> 
      <id>releases</id> 
      <url>http://nexus/content/repositories/releases</url> 
      <releases> 
      <enabled>true</enabled> 
      <updatePolicy>always</updatePolicy> 
      </releases> 
      <snapshots> 
      <enabled>false</enabled> 
      </snapshots> 
     </repository> 
     <repository> 
      <id>nexus</id> 
      <url>http://nexus/content/groups/public</url> 
     </repository> 
     </repositories> 
    </profile> 
    </profiles> 
    <activeProfiles> 
    <activeProfile>nexussrv</activeProfile> 
    </activeProfiles> 
</settings> 

從Nexus和出版的文物(快照和RELEASE)與此配置的聯繫工作,下載,但它不會從本地存儲庫中使用的文物。

感謝您的幫助!

回答

14

您已將SNAPSHOTs配置爲總是<updatePolicy>always</updatePolicy>)從您的snapshot-nexus下載。因此,即使您的本地緩存(~/.m2/repository)具有更新版本的快照,maven也會嘗試從配置的服務器(http://nexus/content/repositories/snapshots)下載它。

考慮更改快照條目的updatePolicy。例如。如果您有一臺每天(早上)部署SNAPSHOT到快照連接的CI服務器,請將updatePolicy更改爲daily

+1

mhh。我將它從始終設置爲每天,但它仍嘗試從聯結中接收它。 –

+4

如前所述,maven每天檢查一次連接。如果你有一些快照(例如,如果一個CI服務器部署它),這是唯一可用的。如果你永遠不會在關係上有shnapshot,那麼你應該將updatePolicy設置爲從不。 – MrD

+1

現在工作。謝謝! –