2012-04-09 61 views
1

我的構建打破了新的機器,因爲其中一個存儲庫正在爲pom和jar而不是預期的404返回一個301頁面。依賴關係是asm:asm:1.3。它在中環,但Maven似乎並不在那裏。Maven 2.2.1存儲庫順序似乎是任意的

這裏是生成日誌的一個示例:

Downloading: http://download.java.net/maven/2/asm/asm/3.1/asm-3.1.pom 
[INFO] Unable to find resource 'asm:asm:pom:3.1' in repository java.net2 (http://download.java.net/maven/2) 
Downloading: http://repository.primefaces.org/asm/asm/3.1/asm-3.1.pom 
[INFO] Unable to find resource 'asm:asm:pom:3.1' in repository prime-repo (http://repository.primefaces.org) 
Downloading: https://repository.jboss.org/nexus/content/groups/public-jboss//asm/asm/3.1/asm-3.1.pom 
[INFO] Unable to find resource 'asm:asm:pom:3.1' in repository jboss-public-repository-group (https://repository.jboss.org/nexus/content/groups/public-jboss/) 
Downloading: http://maven.thebuzzmedia.com/asm/asm/3.1/asm-3.1.pom 
[INFO] Unable to find resource 'asm:asm:pom:3.1' in repository The Buzz Media Maven Repository (http://maven.thebuzzmedia.com) 
Downloading: http://maven.glassfish.org/content/groups/glassfish/asm/asm/3.1/asm-3.1.pom 
185b downloaded (asm-3.1.pom) 
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '6c9fd3d150b8a5f0ca676f49b8ed603793cabebb'; remote = '<html> 
<head><title>301' - RETRYING 
Downloading: http://maven.glassfish.org/content/groups/glassfish/asm/asm/3.1/asm-3.1.pom 
185b downloaded (asm-3.1.pom) 
[WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = '6c9fd3d150b8a5f0ca676f49b8ed603793cabebb'; remote = '<html> 
<head><title>301' - IGNORING 
[WARNING] POM for 'asm:asm:pom:3.1:compile' is invalid. 

下面是我的pom.xml的倉庫部分:

<repositories> 
    <repository> 
     <id>central</id> 
     <name>Central Maven Repository</name> 
     <url>http://repo1.maven.org/maven2</url> 
     <layout>default</layout> 
    </repository> 
    <repository> 
     <id>java.net2</id> 
     <name>Repository hosting the jee6 artifacts</name> 
     <url>http://download.java.net/maven/2</url> 
    </repository> 
    <repository> 
     <id>prime-repo</id> 
     <name>Prime Technology Maven Repository</name> 
     <url>http://repository.primefaces.org</url> 
     <layout>default</layout> 
    </repository> 
    <repository> 
     <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> 
     <id>jboss-public-repository-group</id> 
     <layout>default</layout> 
     <name>JBoss Public Maven Repository Group</name> 
    </repository> 
    <repository> 
     <id>The Buzz Media Maven Repository</id> 
     <url>http://maven.thebuzzmedia.com</url> 
    </repository> 
</repositories> 

我沒有settings.xml文件。

從我所知道的,對澤西服務器1.3的依賴正在打破構建。它的pom.xml指定了現在不存在的存儲庫http://maven.glassfish.org/content/groups/glassfish。但是我指定的所有其他存儲庫都按照我指定的順序進行了檢查。也就是說,除了中央之外的一切我如何讓Maven先檢查中央存儲庫?或者至少在使用依賴關係的poms中指定的存儲庫之前檢查Central?

回答

0

我可以做的第一個建議是閱讀sonatype article about repositories in your pom。此外http code 301 means in move permanently。這意味着您用於您的某個存儲庫的URL似乎已過時或應該有所不同。 定義的glassfish repository seemed to wrong,因爲它應該是一個https連接。

Furthmore我可以推薦到use a repository manager

我想起了一個問題:爲什麼要在存儲庫列表中定義Maven Central,導致它已經在Maven本身中定義了...... BTW:應該將存儲庫定義放入settings.xml而不是pom.xml除了使用存儲庫管理器。

要定義存儲庫訪問的順序,請在reverse order based on their definition in the settings.xml中完成。爲了更好地控制這一點,需要使用存儲庫管理器。

一個重要的問題:爲什麼不使用Maven 3.0.X而不是Maven 2.2.1?

+0

對不起,我沒有資源來構建基礎結構只是爲了編譯Java程序,所以版本庫管理器是不可能的。根據sonatype文章,在我的情況下,更適合將存儲庫放在pom中。我有時與其他人協作,因此項目必須是可移植的 - 不依賴於用戶特定的配置。我明確定義了中央回購,因爲它沒有被考慮。它仍然不是,所以我發佈了這個問題。我沒有使用Maven 3,因爲它不會構建我的項目。也許我需要進一步調查Maven 3。 – 2012-04-09 17:34:43

+0

剛剛有一臺Mac,並使用NetBeans的嵌入式Maven構建了該項目,該Maven是3.0.x.我根本不需要改變任何東西。在這臺機器上還沒有其他任何通過Maven構建的,所以從一開始它就是一個乾淨的環境。所以看起來很有希望。下一次我嘗試一個Centos部署 - 涉及到從源代碼構建 - 我會刺探使用3.0.x.如果這樣做,我會將您的答案標記爲Maven 3.0.x的建議。 – 2012-04-18 00:41:36

+0

僅接受Maven 3.x建議。爲小團隊(像我這樣的團隊)建立基礎設施似乎是過度殺傷力。 – 2012-05-07 15:02:38