2011-01-10 330 views
85

這應該是我朋友的一個工作項目。他在我面前展示了該項目,然後我複製了該項目,並將其作爲現有的Maven項目導入(我正在使用m2eclipse插件)。Maven無法解析依賴關係,工件無法解析

然後發生此錯誤。每次我嘗試使用maven構建某些東西時,都會重現此錯誤。

做mvn依賴項:樹,依賴項:列表或通常的生成包將導致相同的錯誤。

運行的「一攬子」從Eclipse構建的錯誤是:

[INFO] Scanning for projects... 
[INFO]                   
[INFO] ------------------------------------------------------------------------ 
[INFO] Building Jackpot Portal Webapp 1.0-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet:jar:2.5.0 is missing, no dependency information available 
[WARNING] The POM for javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0 is missing, no dependency information available 
[WARNING] The POM for javax.transaction:com.springsource.javax.transaction:jar:1.1.0 is missing, no dependency information available 
[WARNING] The POM for org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6 is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 0.963s 
[INFO] Finished at: Tue Jan 11 01:55:41 WIT 2011 
[INFO] Final Memory: 2M/56M 
[INFO] ------------------------------------------------------------------------ 

[ERROR] Failed to execute goal on project jackpot: Could not resolve dependencies 
for project com.jeteo:jackpot:war:1.0-SNAPSHOT: The following artifacts could 
not be resolved: javax.servlet:com.springsource.javax.servlet:jar:2.5.0, 
javax.servlet:com.springsource.javax.servlet.jsp.jstl:jar:1.2.0, 
javax.transaction:com.springsource.javax.transaction:jar:1.1.0, 
org.slf4j:com.springsource.slf4j.log4j:jar:1.5.6: Failure to find 
javax.servlet:com.springsource.javax.servlet:jar:2.5.0 in 
http://repository.springsource.com/maven/bundles/release was cached in the 
local repository, resolution will not be reattempted until the update 
interval of com.springsource.repository.bundles.release has elapsed or 
updates are forced -> [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 

這裏是pom.xml中的內容:

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.jeteo</groupId> 
<artifactId>jackpot</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>Jackpot Portal Webapp</name> 
<url>http://www.jeteo.com</url> 
<properties> 
    <java-version>1.6</java-version> 
    <org.springframework-version>3.0.3.RELEASE</org.springframework-version> 
    <org.hibernate-version>3.6.0.Final</org.hibernate-version> 
    <org.aspectj-version>1.6.9</org.aspectj-version> 
    <org.slf4j-version>1.5.10</org.slf4j-version> 
</properties> 
<dependencies> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-webmvc</artifactId> 
    <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-test</artifactId> 
     <version>${org.springframework-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>junit</groupId> 
    <artifactId>junit</artifactId> 
    <version>4.8.1</version> 
    <scope>test</scope> 
    </dependency> 
    <dependency> 
    <groupId>net.sf.jt400</groupId> 
    <artifactId>jt400</artifactId> 
    <version>6.6</version> 
    <scope>compile</scope> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>${org.hibernate-version}</version> 
    <scope>compile</scope> 
    </dependency> 
    <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${org.hibernate-version}</version> 
      <scope>compile</scope> 
     </dependency> 

    <!-- AspectJ --> 
    <dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjrt</artifactId> 
    <version>${org.aspectj-version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.aspectj</groupId> 
    <artifactId>aspectjtools</artifactId> 
    <version>${org.aspectj-version}</version> 
    </dependency> 

    <dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>com.springsource.javax.servlet</artifactId> 
    <version>2.5.0</version> 
    <scope>provided</scope> 
    </dependency> 
    <dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>com.springsource.javax.servlet.jsp.jstl</artifactId> 
    <version>1.2.0</version> 
    <scope>provided</scope> 
    </dependency> 
    <!-- 
    <dependency> 
    <groupId>javax.persistence</groupId> 
    <artifactId>com.springsource.javax.persistence</artifactId> 
    <version>1.0.0</version> 
    <scope>compile</scope> 
    </dependency> 
    --> 
    <dependency> 
    <groupId>javax.transaction</groupId> 
    <artifactId>com.springsource.javax.transaction</artifactId> 
    <version>1.1.0</version> 
    <scope>compile</scope> 
    </dependency> 
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-api</artifactId> 
    <version>1.5.6</version> 
    </dependency> 
    <dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>com.springsource.slf4j.log4j</artifactId> 
    <version>1.5.6</version> 
    </dependency> 
    <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.11</version> 
      <type>jar</type> 
      <scope>compile</scope> 
     </dependency> 

</dependencies> 
<repositories> 
    <!-- Spring releases --> 
    <repository> 
    <id>com.springsource.repository.bundles.release</id> 
    <name>Spring Maven Repository Repository</name> 
    <url>http://repository.springsource.com/maven/bundles/release</url> 
    </repository> 
    <!-- For hibernate 3.6 support --> 
    <repository> 
    <id>jboss</id> 
    <url>https://repository.jboss.org/nexus/content/groups/public/</url> 
    </repository> 
</repositories> 
<build> 
    <finalName>jackpot</finalName> 
    <plugins> 
    <plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>tomcat-maven-plugin</artifactId> 
      <version>1.1</version> 
      <configuration> 
      <url>http://localhost:8080/manager</url> 
      </configuration> 
     </plugin> 
    <plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
    <source>1.6</source> 
    <target>1.6</target> 
    </configuration> 
    </plugin> 
    </plugins> 
</build> 
</project> 

我已經嘗試下載最新版本的maven,並將其包含在日食helios中,但仍然是同樣的問題。即使我在shell命令行(eclipse外部)中運行它,也會發生同樣的錯誤信息。

我缺少什麼?

回答

68

看起來你錯過了一些Maven回購。詢問你的朋友的.m2/settings.xml,你可能想要更新POM以包含那裏的存儲庫。

--edit:一些快速google搜索後,你可以添加以下到您的POM:

<repository> 
    <id>com.springsource.repository.bundles.release</id> 
    <name>SpringSource Enterprise Bundle Repository - SpringSource Bundle Releases</name> 
    <url>http://repository.springsource.com/maven/bundles/release</url> 
</repository> 
<repository> 
    <id>com.springsource.repository.bundles.external</id> 
    <name>SpringSource Enterprise Bundle Repository - External Bundle Releases</name> 
    <url>http://repository.springsource.com/maven/bundles/external</url> 
</repository> 
+5

謝謝!我的朋友提到它在他的筆記本電腦上工作,因爲他已經獲得了緩存在.m2 /中的依賴關係,並且maven不再嘗試下載它們。他分享了資料庫的條目,有些像你的發現,現在它運行良好。謝謝你的時間!如果我可能知道,你用什麼關鍵字來找出要使用的存儲庫?我昨天也嘗試了谷歌搜索,但我最終悲慘。哈哈 – bertie 2011-01-11 07:57:12

+6

我知道這是一個存儲庫問題,因爲「POM for xxx is missing」警告消息。所以我剛剛搜索了「springsource maven」,並提出了springource項目常見問題解答,並將其設置爲與Maven一起工作。 – wmorrell 2011-01-12 02:26:26

3

artifactId爲所有無法下載的依賴是不正確的 - 因爲某些原因,他們的前綴爲com.springsource。剪切/粘貼問題?

您可以嘗試替換它們,如下所示。

 <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1.0</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.5.6</version> 
     </dependency> 

您可能還想爲這些工件添加maven中央存儲庫,以防它們在指定存儲庫中不可用。

<repository> 
    <id>maven2</id> 
    <url>http://repo1.maven.org/maven2</url> 
    </repository> 
1

我有一個類似的消息,我的問題是我的settings.xml中的一些代理首選項。 所以我禁用他們,一切正常。

0

我有這個問題。在我的情況下,它是由IntelliJ Idea搞亂了一些pom.xml文件引起的(它似乎很喜歡這樣做)。我只是恢復到原來的副本,並再次工作!

5

作爲同樣問題的替代來源,this answer引用Maven 3與Maven 2作爲此問題的潛在原因。據我所知,這是由於local repository resolution在Maven 3中發生了變化所致。爲了防止其他人使用它並達到此答案(就像我一樣)。

0

我也有這個問題,原來是因爲NetBeans添加了一些東西到我的pom.xml文件。自上次成功部署以來沒有增加任何內容。

3

我有類似的問題,我通過在我的pom中添加下面的回購站來解決它。xml:

<repository> 
     <id>org.springframework.maven.release</id> 
     <name>Spring Maven Release Repository</name> 
     <url>http://repo.springsource.org/libs-release-local</url> 
     <releases><enabled>true</enabled></releases> 
     <snapshots><enabled>false</enabled></snapshots> 
    </repository> 
    <!-- For testing against latest Spring snapshots --> 
    <repository> 
     <id>org.springframework.maven.snapshot</id> 
     <name>Spring Maven Snapshot Repository</name> 
     <url>http://repo.springsource.org/libs-snapshot-local</url> 
     <releases><enabled>false</enabled></releases> 
     <snapshots><enabled>true</enabled></snapshots> 
    </repository> 
    <!-- For developing against latest Spring milestones --> 
    <repository> 
     <id>org.springframework.maven.milestone</id> 
     <name>Spring Maven Milestone Repository</name> 
     <url>http://repo.springsource.org/libs-milestone-local</url> 
     <snapshots><enabled>false</enabled></snapshots> 
    </repository> 
11

Maven將文件保存在緩存中,並且不會重試下載它們。您只需通過刪除.m2目錄手動「幫助」他,然後我們的朋友就可以下載所有舊的依賴關係。

0

我的EAR項目有2個模塊* .ear和* .war,當我嘗試mvn eclipse:eclipse時,我在*.war項目上得到了這個依賴性錯誤。通過修復*.war項目中的utf-8編碼問題來解決此問題。 mvn-X-e選項在這裏沒有幫助。

0

這種問題是由兩個原因造成的:

  1. 依賴的拼寫有誤
  2. MVN設置的配置(即〜/ .m2目錄/ settings.xml中)是錯誤的

如果可以下載大多數依賴關係,那麼原因1可能是最可能的錯誤。 相反,如果大多數依賴關係存在問題,那麼你應該看看settings.xml

那麼,我試圖解決我的問題整個下午,最後我明白了。我的問題發生在settings.xml中,而不是丟失或錯誤拼寫的settings.xml,但丟失activeProfiles

0

手動下載罐,然後從其中罐子被保存的文件夾執行命令:

MVN安裝:安裝文件-Dfile = jar_file_name的.jar-DgroupId = GROUP_ID -DartifactId = artifact_id -Dversion = version_no -Dpackaging =罐子

JAR文件,jar_file_name,GROUP_ID,artifact_id和version_no可以從Maven倉庫頁面獲得。

快樂編碼:)

相關問題