Maven无法解决依赖关系,工件无法parsing

这应该是我朋友的一个工作项目。 他在我面前展示了这个项目,然后我复制了这个项目,把它作为一个现有的maven项目(我正在使用m2eclipse插件)导入。

然后,发生这个错误。 这个错误可以在我每次尝试用maven构build时重现。

执行mvn依赖项:树,依赖项:列表或通常的构build包将导致相同的错误。

从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,并将其包含在eclipse helios中,但仍然是同样的问题。 即使当我在shell命令行(在eclipse外部)运行它时也会发生同样的错误信息。

我错过了什么?

看起来你错过了一些Maven回购。 询问你的朋友的.m2/settings.xml ,你可能想要更新POM来包含那里的存储库。

– 编辑:一些快速search后,尝试添加到您的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> 

Maven将文件保存在caching中,不要重试下载它们。 你可以简单地通过删除.m2目录来手动“帮助”他,然后我们的朋友会把所有的东西都下载到旧的依赖项上。

作为同样的问题的另一个来源, 这个答案引用了Maven 3与Maven 2作为这个问题的潜在原因。 据我所知,这是由于在Maven 3中更改的本地存储库解决scheme的更改所造成的。为了防止其他人使用它并达到此答案(就像我一样)。

所有未能下载的依赖项的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> 

我有类似的问题,我通过在我的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> 

我有一个类似的消息,我的问题是我的settings.xml中的一些代理首选项。 所以我禁用他们,一切工作正常。

我有这个问题。 在我的情况下,这是由IntelliJ Idea搞乱了一些pom.xml文件(它似乎很喜欢这样做)造成的。 我刚刚恢复到原来的副本,并重新开始工作!

我也遇到了这个问题,原来是因为NetBeans添加了一些东西到我的pom.xml文件中。 仔细检查之前没有添加任何成功的部署。

我的EAR项目有2个模块* .ear和* .war,当我尝试mvn eclipse:eclipse时,在*.war项目中出现这个依赖错误mvn eclipse:eclipse 。 通过修复*.war项目中的utf-8编码问题来解决这个问题。 mvn -X-e选项在这里没有帮助。

这种问题是由两个原因造成的:

  1. 依赖的咒语是错误的
  2. mvn设置(即〜/ .m2 / settings.xml)的configuration是错误的

如果可以下载大多数依赖关系,那么原因1可能是最可能的错误。 相反,如果大多数依赖有问题,那么你应该看看settings.xml

那么,我一直试图解决我的问题整个下午,最后我得到了它。 我的问题发生在settings.xml,而不是丢失或错误的settings.xml的拼写,但失去了activeProfiles

手动下载jar,然后从保存jar的文件夹执行命令:

mvn install:install-file -Dfile = jar_file_name .jar -DgroupId = group_id -DartifactId = artifact_id -Dversion = version_no -Dpackaging = jar

jar文件,jar_file_name,group_id,artifact_id和version_no可以从maven仓库页面获得。

快乐编码:)