Maven 无法解析依赖项,工件无法解析

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

然后,这个错误就发生了。每次我尝试用 Maven 构建东西时,这个错误都会重现。

执行 mvn 扶持: 树,扶持: 列表,或通常的构建包,将导致相同的错误。

从 eclipse 运行‘ package’build 的错误是:

[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的内容:

<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/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,并将其包含在 eclipseHelios 中,但仍然存在同样的问题。即使我在 shell 命令行中运行它(在 eclipse 之外) ,也会发生相同的错误消息。

我错过了什么?

739647 次浏览

看来你错过了一些 Maven 的回购。请求您的朋友的 .m2/settings.xml,您可能希望更新 POM 以包含那里的存储库。

编辑: 在快速搜索之后,试着把这个添加到你的 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>

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

我得到了一个类似的消息,我的问题是 setings.xml 中的一些代理首选项。 所以我把它们关了,一切正常。

我有个问题。在我的例子中,这是由于 IntelliJ Ideas 在一些 pom.xml 文件中乱搞(它似乎很喜欢这样做!).我只是恢复了原来的版本,一切又恢复正常了!

作为同一问题的替代来源,这个答案引用 Maven3和 Maven2作为这个问题的潜在原因。据我所知,这是由于 本地存储库解析本地存储库解析在 Maven3中发生了变化。把这个放在这里,以防其他人在谷歌上搜索并得到这个答案(就像我一样)。

我也有这个问题,原来是因为 NetBeans 在我的 pom.xml 文件中添加了一些东西。自从以前的成功部署以来,没有添加任何内容。

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

Maven 把你的文件保存在缓存里,不要再试图下载它们。你可以简单地手动“帮助”他删除 .m2目录,然后我们的朋友将下载所有的旧依赖关系。

我的 EAR 项目有2个模块 * 。耳朵和 * 。War 和我在尝试 mvn eclipse:eclipse时在 *.war项目上得到这个依赖性错误。通过修复 *.war项目中的 utf-8编码问题解决了这个问题。mvn -X-e选项在这里没有帮助。

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

  1. 依赖的咒语是错误的
  2. Mvn 设置(即. ~/. m2/setings.xml)的配置是错误的

如果大多数依赖项都可以下载,那么原因1可能是最有可能的 bug。 相反,如果大多数依赖项都存在这个问题,那么您应该查看一下 Setings.xml

我整个下午都在努力解决我的问题,终于解决了。我的问题出现在 setings.xml 中,不是 Setings.xml的丢失或错误拼写,而是 < strong > activeProfiles 的丢失。

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

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

jar filejar_file_namegroup_idartifact_idversion_no可以从 maven 存储库页面获得。

原来是因为我电脑上的防火墙,关掉它对我很有用。

mvn clean install -U

解决了我的问题。因为回购被缓存,我需要强迫它得到最新的版本。

遇到过这样的问题。根本原因是.m2文件夹。 你得确保你想访问的东西都在你的。M2文件夹(这是您的本地回购)。如果东西在那里,那么你很好。 这通常出现在您系统的用户文件夹中(可以是 mac/linux,甚至是 windows)

试着逃跑

mvn dependency:purge-local-repository clean install -U

这解决了我面临的一个类似问题。 https://maven.apache.org/plugins/maven-dependency-plugin/examples/purging-local-repository.html提供更多信息。 这个问题的答案是从以前的一个相关的线索上的答案改编而来的: https://stackoverflow.com/a/33929792/5538923

此外,由于我在 Windows 中使用代理连接互联网,虽然设置了环境变量 HTTP _ PROXY、 HTTPS _ PROXY 和 NO _ PROXY,但我还是不得不在 setings.xml 文件中设置它们:

<settings>
<proxies>
<proxy>
<id>httpproxy</id>
<active>true</active>
<protocol>http</protocol>
<host>your-proxy-host</host>
<port>your-proxy-port</port>
<nonProxyHosts>localhost|*.example.com</nonProxyHosts>
<username>username</username>
<password>password</password>
</proxy>
<proxy>
<id>httpsproxy</id>
<active>true</active>
<protocol>https</protocol>
<host>your-proxy-host</host>
<port>your-proxy-port</port>
<nonProxyHosts>localhost|*.example.com</nonProxyHosts>
<username>username</username>
<password>password</password>
</proxy>


</proxies>
</settings>

最后一个配置是从 Stackoverflow 的另一个答案中改编而来的: https://stackoverflow.com/a/13958845/5538923。请参阅在 Maven 中设置代理配置的详细信息: https://maven.apache.org/guides/mini/guide-proxies.html。其他发现成功的用户指定 Maven 的代理来设置另一个环境变量(在 Windows 中) ,例如(参见这里: https://stackoverflow.com/a/46244884/5538923) :

MAVEN_OPTS
-Dhttp.proxyHost=proxy.myproxy.com -Dhttp.proxyPort=80 -Dhttps.proxyHost=proxy.myproxy.com -Dhttps.proxyPort=80

然而,对我来说,它只是通过在 C:/Users/myUser/. m2/setings.xml 文件中设置这些值来工作。

我也有同样的问题,但是我把 settings.xml文件放在 .m2文件夹中修复了这个问题。这是我放置 setings.xml 文件 C:/Users/myUser/.m2/settings.xml文件的确切路径。

只需从 C:/Users/username/. m2/中删除或剪切 setings.xml 文件 文件夹,它将解决这个问题