2012-08-09 85 views
4

我正在使用Maven來處理Java項目。我認爲只有在第一次編譯時才需要Internet連接從遠程存儲庫下載所需的庫,但是每當我編譯代碼時,我都會收到幾個下載消息。類似這樣的消息:Maven:通常從遠程存儲庫下載的元數據xml文件

Downloading: http://repo.maven.apache.org/maven2/org/eclipse/core/resources/maven-metadata.xml 
Downloading: http://repository.springsource.com/maven/bundles/external/org/eclipse/core/resources/maven-metadata.xml 
Downloading: http://repository.springsource.com/maven/bundles/release/org/eclipse/core/resources/maven-metadata.xml 
Downloading: https://oss.sonatype.org/content/repositories/snapshots/org/eclipse/core/resources/maven-metadata.xml 

爲什麼會發生這種情況以及如何防止它?

回答

4

最重要的是開始使用repository manager此外,檢查您的settings.xml file中可配置爲檢查遠程存儲庫(更新策略)的配置。

+0

將更新策略更改爲從不,這有效。 – 2012-08-09 15:39:31

+0

我不明白爲什麼Maven首先需要檢查更新,如果我的所有庫的版本都在pom.xml文件中顯式的。從我讀過的內容中,我只需要記得在更新依賴項版本時更改此選項,否則不會從存儲庫下載新版本的現有庫。我可以忍受這一點。在一個完美的世界中,Maven會在pom.xml中檢測到這個更新,然後纔會檢查存儲庫中的最新版本。 – 2012-08-09 15:53:36

1

1)檢查您是否確實在您的本地回購中有這些工件 2)檢查您的存儲庫配置,以便您僅使用您的回購站下載版本。

<project> 
    ... 
    <repositories> 
     <repository> 
      <id>my-repo1</id> 
      <name>your custom repo</name> 
      <url>http://jarsm2.dyndns.dk</url> 
      <releases> 
       <enabled>true</enabled> 
      </releases> 
      <snapshots> 
       <enabled>false</enabled> 
      </snapshots> 
     </repository> 
    </repositories> 
    ... 
</project> 

3)您可以強制行家只使用本地回購與-o選項:

mvn -o clean package 
4

當工件沒有指定版本信息,這通常發生。

maven-metadata.xml是一個文件,其中包含<groupId>,<artifactId>以及有關可用於依賴項的各種版本的版本信息。

如果未在pom.xml中指定工件的版本,maven會下載此元數據文件以檢查本地存儲庫是否包含最新版本。

因此,您可以通過在pom.xml文件中指定工件的版本信息來避免此下載,而不是更改將來可能影響其他jar文件更新過程的更新策略。