2011-02-11 205 views
14

通常情況下,我在我的Maven的配置如下鏡settings.xmlMaven倉庫鏡子

<mirror> 
    <id>internal-repository</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>*</mirrorOf> 
</mirror> 

我的理解是,這面鏡子可以防止Maven的從互聯網上下載的相關性,也就是說,它只會看他們在這個內部庫。

但是,每當我想補充的依賴,是不是在這個內部資料庫,我必須註釋掉上面的文字,並添加以下到項目的pom.xml

<repository> 
    <id>internal-repository</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
</repository> 

當我做這些改變Maven將檢查當地回購協議中的依賴關係,如果未找到,則將其從互聯網下載到本地回購站。一旦我有我需要的依賴關係,然後再更改我的配置。

有沒有辦法讓我想要的行爲 - 總是檢查內部回購,然後公共(互聯網)回購 - 而不必將<repository>添加到每個項目的pom.xml

理想情況下,我想在settings.xml中指定一次該存儲庫,但似乎只能在那裏配置鏡像。

回答

0

將存儲庫部分添加到super pom。讓所有的項目都從超級團隊延伸出來。

因此,每一個其他項目pom都會有一個父級部分來擴展超級pom。

<parent> 
    <groupId>com.ddd.ddd.ddd</groupId> 
    <artifactId>ddd-ddd-parent</artifactId> 
    <version>1.1.1-SNAPSHOT</version> 
    <relativePath>./config/superpom/pom.xml</relativePath> 
</parent> 

這樣你就可以在一個pom文件中存儲庫部分,這就是你的超級pom。你也可以添加這裏所有項目通用的任何依賴項,比如junit,log4j和類似的東西。

在你的settings.xml文件中。你可以添加這個來配置你的本地倉庫。

<localRepository>C:/myBox/maven.repo</localRepository> 
14

您可以嘗試將maven配置爲僅對中央存儲庫使用鏡像,或者排除由某個id標識的存儲庫。

<mirror> 
    <id>internal-mirror</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>central</mirrorOf> 
</mirror> 

或者

<mirror> 
    <id>internal-mirror</id> 
    <url>http://build.idaho.local/wtp_repository</url> 
    <mirrorOf>*,!internal-repository</mirrorOf> 
</mirror> 

的示例是改編自maven settingsguide to mirror settings

1

看起來你可能沒有正確配置或使用鏡像。

理想情況下,您指定爲鏡像的應該是repository manager,它應該透明地從互聯網上的各個存儲庫下載所請求的依賴項並緩存它,從而允許後期下載從鏡像發生。

2

這個問題是很老,但無論如何:

將一個<profile>在你的設置。XML,使用<repository>元素

... 
    <profile> 
     <id>devel-repos</id> 

     <repositories> 
      <repository> 
       <id>repo-release</id> 
       <url>http://repohost:repoport/path/to/release/repo</url> 
      </repository> 
      <repository> 
       <id>repo-snapshot</id> 
       <url>http://repohost:repoport/path/to/snapshot/repo</url> 
      </repository> 
     </repositories> 
    </profile> 
... 

然後設置上面的配置文件作爲<activeProfile>指定你的內部存儲庫。這將激活每個Maven調用的配置文件。

... 
<activeProfiles> 
    <activeProfile>devel-repos</activeProfile> 
</activeProfiles> 
... 

這不避免多個倉庫的定義,但它給你的最重要的東西:一切都在settings.xml集中和你pom.xml s爲清潔(和便攜式)。

0

settings.xml中刪除鏡像設置,並將以下代碼用於我。

<profiles> 
    <profile> 
     <id>profile-1</id> 
     <repositories> 
      <repository> 
       <id>internal-repository-1</id> 
       <url>http://build.idaho.local/wtp_repository</url> 
      </repository> 
     </repositories> 
    </profile> 
</profiles> 
<activeProfiles> 
    <activeProfile>profile-1</activeProfile> 
</activeProfiles>