2013-10-04 153 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

现在工作。谢谢! –