2015-01-20 206 views
3

我正在嘗試使用maven構建moquette,作爲Maven艱難的完整新手。Maven:無法解決依賴關係(找不到工件)

我使用以下命令來構建。

MVN全新安裝-U

而且

MVN全新安裝-U | grep的錯誤

結果如下:

[ERROR] Failed to execute goal on project moquette-broker: Could not resolve dependencies for project org.eclipse.moquette:moquette-broker:jar:0.7-SNAPSHOT: Could not find artifact org.mapdb:mapdb:jar:1.1.0-SNAPSHOT in Paho Releases (https://repo.eclipse.org/content/repositories/paho-releases/) -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException 
[ERROR] 
[ERROR] After correcting the problems, you can resume the build with the command 
[ERROR] mvn <goals> -rf :moquette-broker 

的完整輸出:

MVN乾淨安裝-e -X -U

可以發現here

的pom.xml樣子:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <netty.version>4.0.24.Final</netty.version> 
     <source.version>1.7</source.version> 
     <target.version>1.7</target.version> 
    </properties> 

    <groupId>org.eclipse.moquette</groupId> 
    <artifactId>moquette-parent</artifactId> 

    <packaging>pom</packaging> 
    <version>0.7-SNAPSHOT</version> 
    <name>Moquette MQTT parent</name> 
    <url>http://code.google.com/p/moquette-mqtt/</url> 


    <modules> 
     <module>parser_commons</module> 
     <module>netty_parser</module> 
     <module>broker</module> 
     <module>distribution</module> 
     <module>bundle</module> 
    </modules> 

    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>2.6</version> 
      </plugin> 
     </plugins> 
    </reporting> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${source.version}</source> 
        <target>${target.version}</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

是什麼原因造成這個問題,如何解決這一問題?

+0

您使用的是正確的存儲庫嗎?我去了存儲庫列出(https://repo.eclipse.org/content/repositories/paho-releases/)和JAR不在那裏 – Ascalonian 2015-01-20 19:24:09

回答

4

根據絨毛的documentation,一個簡單的mvn clean install應該這樣做:

庫,光盤放入克隆的來源和一個git克隆後:MVN清潔套裝。在分發/目標目錄中,將生成具有所有依賴關係和運行腳本的代理的自包含tar。

換句話說,你做的一切都是正確的。

但是,依賴關係org.mapdb:mapdb:jar:1.1.0-SNAPSHOT缺失(截至2015年1月20日)。換句話說,安裝說明是不夠的。

通過引用MapDB documentation,他們每晚發佈構建到存儲庫。如果您將其添加爲存儲庫,它的工作(我只是驗證了這一點我自己):

<repositories> 
    <repository> 
     <id>sonatype-snapshots</id> 
     <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
    </repository> 
</repositories> 

您可以直接把這個定義在您的POM文件,或者在Maven安裝的settings.xml文件進行配置,根據說明here

因此,對於你的POM,它看起來就像這樣:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <repositories> 
     <repository> 
      <id>sonatype-snapshots</id> 
      <url>https://oss.sonatype.org/content/repositories/snapshots</url> 
     </repository> 
    </repositories> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <netty.version>4.0.24.Final</netty.version> 
     <source.version>1.7</source.version> 
     <target.version>1.7</target.version> 
    </properties> 

    <groupId>org.eclipse.moquette</groupId> 
    <artifactId>moquette-parent</artifactId> 

    <packaging>pom</packaging> 
    <version>0.7-SNAPSHOT</version> 
    <name>Moquette MQTT parent</name> 
    <url>http://code.google.com/p/moquette-mqtt/</url> 


    <modules> 
     <module>parser_commons</module> 
     <module>netty_parser</module> 
     <module>broker</module> 
     <module>distribution</module> 
     <module>bundle</module> 
    </modules> 

    <reporting> 
     <plugins> 
      <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>cobertura-maven-plugin</artifactId> 
       <version>2.6</version> 
      </plugin> 
     </plugins> 
    </reporting> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>${source.version}</source> 
        <target>${target.version}</target> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 

爲了解釋這個有點多,行家檢查中所配置的存儲庫所需的器物。在大多數情況下,工件存在於「默認」存儲庫中,不需要額外的存儲庫。

另一方面,假設您已經構建了自己的maven工件,並託管了自己的maven存儲庫。您將工件發佈到該存儲庫。現在,如果其他用戶想要使用它,他們將不得不做類似於上面的配置。

順便說一句,-U強制更新,這是不需要的,除非你真的想迫使maven下載/重新下載依賴關係。

+0

我已經編輯我的pom.xml文件到http:// pastebin。 com/zxD9juY5會導致相同的錯誤。我知道我必須在我的pom.xml的'project'標籤中包含這些存儲庫,所以這個文件對我來說似乎是正確的?創建一個名爲'〜/ .m2/settings.xml'的空文件並將這些存儲庫粘貼到該文件中也會導致此錯誤。 – Wouter 2015-01-20 19:56:42

+0

@Wouter我實際上誤解了你的問題。您需要添加另一個存儲每晚構建的存儲庫。有問題的依賴似乎還沒有進入「默認」maven倉庫。看到我更新的答案。 – Magnilex 2015-01-20 20:21:37