2013-01-06 204 views
0

我使用maven 3.0(有關係的設置)建立我的項目,並正在逐漸建立故障:Maven倉庫代理混亂

Caused by: org.sonatype.aether.transfer.ArtifactNotFoundException: Could not find artifact directory:apacheds-core:jar:${apacheds_version} in central (http://localhost:8081/nexus/content/repositories/central) 
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:945) 
at org.sonatype.aether.connector.wagon.WagonRepositoryConnector$4.wrap(WagonRepositoryConnector.java:940) 

我的基本的困惑是:當行家認爲在pom.xml的依賴,它如何去尋找遠程倉庫中的工件

我目前的理解是:

  1. 它首先會看在本地倉庫(.m2目錄/庫)。

  2. 如果它不找到那裏,那麼它會嘗試搜索下標籤的settings.xml中指定的倉庫。 問題:它嘗試所有提到的存儲庫。 或只是第一個?下面我提到了5個回購:maven是一個一個搜索還是僅僅搜索一個?

<repositories> <repository> <id>central</id> <url>http://localhost:8081/nexus/content/repositories/central</url> </repository> <repository> <id>remote</id> <url>http://localhost:8081/nexus/content/repositories/remote-proxy-nexus-central</url> </repository> <repository> <id>thirdParty</id> <url>http://localhost:8081/nexus/content/repositories/thirdparty</url> </repository> <repository> <id>codehaus</id> <url>http://localhost:8081/nexus/content/repositories/codehaus-snapshots</url> </repository> <repository> <id>public</id> <url>http://localhost:8081/nexus/content/groups/public</url> </repository> </repositories>

我最後的困惑是關於在settings.xml代理部分。這些是什麼位置:

<proxy> 
    <id>remote-proxy-nexus-central</id> 
    <active>true</active> 
    <protocol>http</protocol> 
    <host>repo1.maven.org/maven2</host> 
    <port>8080</port> 

</proxy> 

回答

1

我可以告訴你,我們使用本地Nexus和有我們的所有用戶都具有以下在他們的settings.xml:

<mirror> 
    <id>our-mirror</id> 
    <name>Org Public Mirror</name> 
    <url>http://host/nexus/content/groups/public</url> 
    <mirrorOf>*</mirrorOf> 
</mirror> 

這將導致Maven的任何調用去讓Nexus獲得依賴。你首先在當地的.m2中查找maven是對的。

Nexus代理許多存儲庫,並且它們都是聯合的(爲maven進程調用它)。 這意味着開發者的本地maven只知道單個存儲庫:Nexus。 Nexus將爲其代理/託管的存儲庫中的所有所需依賴項標識提供服務。

至於Proxy,我們有一個組織代理,但Nexus在組織中(它的代理被配置爲允許訪問外部世界),所以maven不需要這個特定的配置。

我希望這給你一些信息,開始。

我強烈建議你尋找到的Nexus/Maven的相關配置爲:http://www.sonatype.org/

0

正確設置爲使用Maven與Nexus是在使用Nexus書庫管理記錄。示例settings.xml是here。閱讀說明並注意,您需要添加中央存儲庫的替代以啓用快照。

一旦你這樣做了,你不會在你的settings.xml中配置一個代理,因爲它可以在沒有代理(通常)的本地網絡中使用。相反,您需要在Nexus中配置代理設置,以便它可以轉到您正在代理的Central等存儲庫。全局代理配置記錄爲here,並且如果需要,您還可以配置每個代理存儲庫的具體信息,例如如果你需要一個你正在代理的代碼庫的用戶名/密碼,因爲它是私有的..

+0

鏈接似乎被打破.. 404沒有找到..如果可能請修復它.. –