2014-02-24 24 views
21

我正在使用Maven 3.1.1。在我的项目之一,我引用另外一个我的项目...如何防止Maven每次都下载文物?

<dependencies> 
      <dependency> 
        <groupId>org.mainco.subco</groupId> 
        <artifactId>myprojectA</artifactId> 
        <version>${project.version}</version> 
      </dependency> 

以上是依赖于其他的我的项目的一对夫妇。但是,当我运行“mvn clean install”时,Maven会尝试下载这些工件,而不是仅使用本地存储库中的内容。如何让Maven只下载这些东西,如果它们不存在于我的本地存储库中?这里是我看到的输出...

davea$ mvn clean install 
[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building subco admin Module 57.0.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
Downloading: http://download.java.net/maven/2/org/mainco/subco/myprojectA/57.0.0-SNAPSHOT/maven-metadata.xml 
Downloading: http://download.java.net/maven/2/org/mainco/subco/subco/57.0.0-SNAPSHOT/maven-metadata.xml 
Downloading: http://download.java.net/maven/2/org/mainco/subco/projectB/57.0.0-SNAPSHOT/maven-metadata.xml 
Downloading: http://download.java.net/maven/2/org/mainco/subco/projectC/57.0.0-SNAPSHOT/maven-metadata.xml 
[INFO] 

回答

14

您可以通过配置$USER_HOME/.m2/settings.xml文件中的存储库来控制更新频率。具体而言,将updatePolicy更改为导致更低频率更新的值。 This Stackoverflow answer有更多的细节。

43

如果您使用离线标志,它将使用您本地库的库。

mvn clean install -o 
+1

有没有什么办法可以使这个默认行为 - 换句话说,它会在出国前先扫描本地回购站? – Dave

+0

这已经是默认值。在这种情况下,您有SNAPSHOT,每天都会检查(默认)。 – khmarbaise

0

您可以在

的settings.xml设置仓库

文件你的Maven的安装。

Maven configuration的网页上阅读更多关于它的信息。

+0

具体而言,应调整每个存储库的'updatePolicy'值。从它的声音来看,这个值目前是“永远”的,你可能想把它设置为导致更少频繁更新的东西。 – user944849

+0

是的,updatePolicy似乎是造成它的原因。如果您想为此创建一个答案,我会接受它。 – Dave

0

根据我的经验,一旦maven已经“决定”它必须从特定服务器下载文件,那么这些都不起作用。

配置updatePolicy一个其他的建议,但为了suceed,你应该去jar文件所在的本地库文件夹,然后删除一个名为“_maven.repositories”的文件。还删除以“.lastUpdated”结尾的al文件。如果你使用的是eclipse插件,还需要“m2e-lastUpdated.properties”。