无法计算构建计划:插件org.apache.maven.plugins:maven-resources-plugin:2.5或其依赖项之一无法解析。

199
org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5
    at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:129)
    at org.eclipse.m2e.core.internal.project.registry.EclipsePluginDependenciesResolver.resolve(EclipsePluginDependenciesResolver.java:48)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor(DefaultMavenPluginManager.java:142)
    at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getMojoDescriptor(DefaultMavenPluginManager.java:261)
    at org.apache.maven.plugin.DefaultBuildPluginManager.getMojoDescriptor(DefaultBuildPluginManager.java:185)
    at org.apache.maven.lifecycle.internal.DefaultLifecycleExecutionPlanCalculator.setupMojoExecution(DefaultLifecycleExecutionPlanCalculator.java:152)
    at org.eclipse.m2e.core.internal.embedder.MavenImpl.setupMojoExecution(MavenImpl.java:386)
    at org.eclipse.m2e.core.internal.project.registry.ProjectRegistryManager.setupMojoExecution(ProjectRegistryManager.java:865)
    at org.eclipse.m2e.core.internal.project.registry.MavenProjectFacade.getMojoExecution(MavenProjectFacade.java:355)
    at org.eclipse.m2e.core.project.configurator.AbstractCustomizableLifecycleMapping.getBuildParticipants(AbstractCustomizableLifecycleMapping.java:66)
    at org.eclipse.m2e.core.project.configurator.AbstractLifecycleMapping.configure(AbstractLifecycleMapping.java:87)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:414)
    at org.eclipse.m2e.core.internal.project.ProjectConfigurationManager.updateProjectConfiguration(ProjectConfigurationManager.java:351)
    at org.eclipse.m2e.core.ui.internal.UpdateMavenProjectJob.runInWorkspace(UpdateMavenProjectJob.java:74)
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Caused by: org.sonatype.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:296)
    at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:186)
    at org.sonatype.aether.impl.internal.DefaultRepositorySystem.readArtifactDescriptor(DefaultRepositorySystem.java:279)
    at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve(DefaultPluginDependenciesResolver.java:115)

我了解到很多人通过以下方法解决了这个问题:

我对Maven很陌生,所以请原谅我的任何无知。

该项目在另一台机器上运行,并且从该机器的存储库中拉取下来,使用相同版本的eclipse和m2e插件。 我已经折腾了超过10个小时,这让我感到非常抓狂(迄今为止,Maven给我带来的只有头痛……)

编辑

仔细查看后,我注意到它没有将.jar文件下载到本地存储库中...我不确定是否显而易见...

我没有选择将Maven依赖项添加到构建路径中。


没有一个答案能够解决我的问题,但我在这篇文章中找到了答案:https://dev59.com/Peo6XIcBkEYKwwoYTSsu,尤其是第一种解决方案。 - Sydney
31个回答

166

我遇到了完全相同的问题。

[ERROR] Plugin org.apache.maven.plugins:maven-resources-plugin:2.5 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-resources-plugin:jar:2.5: Failure to find org.apache.maven.plugins:maven-resources-plugin:pom:2.5 in http://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1]
...

我原先使用maven 3.0.5,eclipse Kepler和JBoss Dev Studio 7。电脑连接内部网络并通过代理访问互联网。这是我的解决方案:

0. 检查maven仓库服务器是否正常

1. 检查代理是否设置并且可用

一开始我以为是代理问题,所以我确保maven的settings.xml文件中包含代理设置(settings.xml可能存在于两个位置,一个在MAVEN_HOME目录下,另一个在%userprofile%.m2\目录下,后者优先级更高):

<proxy>
  <id>optional</id>
  <active>true</active>
  <protocol>http</protocol>
  <username>optional-proxyuser</username>
  <password>optional-proxypass</password>
  <host>proxy.host.net</host>
  <port>80</port>
  <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
</proxy>

通过尝试使用telnet连接代理服务器并检查代理是否工作:

telnet [proxy] [port number]

2. 检查非Eclipse问题

在命令行级别(即在eclipse外部)运行'mvn compile' - 问题相同。

如果'mvn compile'有效,但使用eclipse中的maven插件不起作用,请参见Maven plugin not using eclipse's proxy settings

3. 检查非缓存问题

删除本地maven存储库中的所有内容。 (默认位置:〜/ .m2 / repository)。然后重新运行maven - 问题仍然存在。

4. 对我有用的方法

自动下载并安装丢失的插件: 通过在POM文件构建部分的pluginManagement中声明缺少的插件,Maven将自动检索所需的插件。在POM文件中,添加所需插件版本的此代码:

  <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <artifactId>maven-resources-plugin</artifactId>
              <version>2.7</version>
            </plugin>           
          </plugins>
        </pluginManagement>   
    </build>

手动安装缺失的插件: 我前往http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin/2.5并下载了maven-resources-plugin-2.5.jarmaven-resources-plugin-2.5.pom。把它们直接复制到正确的文件夹(~/.m2/repository/org/apache/maven/plugins/maven-resources-plugin/2.5)中,并重新运行'mvn compile',这解决了问题。


编辑1

在此之后,我又遇到了“mvn install”出现的另外两个问题:

The POM for org.apache.maven.plugins:maven-surefire-plugin:jar:2.10 is missing, no dependency information available

The POM for org.apache.maven.plugins:maven-install-plugin:jar:2.3.1 is missing, no dependency information available

我采用了与上述相同的方法来解决这个问题,从http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-surefire-plugin/2.10http://mvnrepository.com/artifact/org.apache.maven.plugins/maven-install-plugin/2.3.1下载。


3
我本来打算按照你的建议去做,但在最后一刻我尝试了"mvn install"。这个方法奏效了,这表明问题的根本原因可能是默认仓库的服务器出了问题。 - Donal Lafferty
1
谢谢,我的问题确实是与POM文件有关!我想这是因为我在电脑上安装了Maven 2.6而不是在Eclipse中安装。在Maven 2.6的同一文件夹中,JAR和POM文件都在那里,而对于Maven 2.5,只有JAR文件在那里。 - ericn
1
在我的情况下,我检查了~/.m2/repository/org/apache/maven/plugins/maven-resources-plugin/2.6,根本没有pom文件!!这真的帮了我很多。非常感谢! - Anand Rockzz
1
在pom.xml中添加插件maven-resources-plugin对我很有帮助。 - Ilyas Soomro
1
另外,请检查您的代理设置...这是我的问题,因为mvn会尝试下载依赖项,而在代理后也会导致此错误。前往 %userprofile%\.m2\,创建一个 settings.xml 文件,并在其中放置您的代理设置。参考:maven.apache.org/guides/mini/guide-proxies.html。谢谢。 - WesternGun
显示剩余5条评论

138

我曾经遇到过完全相同的问题,由于在某处看到错误是由缓存文件引起的,所以我通过删除 .m2 存储库文件夹下的所有文件来解决它。 下一次构建项目时,我需要重新下载所有依赖项,但它非常值得 - 没有错误!


6
我已经按照你在这里说的做了,问题似乎已经得到解决。 - rpat
2
这里有类似的问题 - 这个解决方案似乎也为我解决了它。 - Priidu Neemre
1
对我来说也是一样的。但是我使用调试选项启动了 mvn,发现本地仓库中的一个 pom 文件已经损坏。删除该文件并再次运行 mvn,结果该文件被重新下载,一切正常。 - Adrian Ber
2
我刚刚删除了org/apache/maven/plugins/maven-resources-plugin/2.5文件夹中的所有内容,然后再次运行mvn install。这对我有效。 - Shams
1
这正是我想要的。 - keroles Monsef
显示剩余5条评论

20

尝试以下几点:

  1. 双重检查本地构件库在您的settings.xml文件中配置的位置(位于以下位置{您的主目录}/.m2/settings.xml)。您确定本地仓库的位置与您认为的一样吗?(是的,这是我过去犯过的错误...)
  2. 删除新构建机器上构件库的全部内容(或至少与Maven相关的任何内容)。您提到了进行一些构件库清理,但我不知道您删除了哪个目录。我遇到过像这样的奇怪问题,当时一个jar文件被损坏了。
  3. 确保您有足够的磁盘空间/配额用于本地构件库。当我没有足够的配额来容纳所有构件时,我遇到了奇怪的问题,很可能是由于部分下载的jar文件引起的。
  4. 尝试在命令行上使用纯Maven运行;排除Eclipse和m2e的影响。mvn -U dependency:resolve应该可以解决问题。-U强制Maven无论您的仓库更新策略如何都要下载。添加-X以获取详细的调试日志。
  5. 从MAVEN_HOME\conf\复制settings.xml到USER_HOME.m2。如果您在代理服务器后面,则添加代理(如果需要)。

+1. 第一个检查通常可以处理大多数情况,特别是当我们有一个特定的mvn设置文件时。对于Eclipse用户,快速修复方法是在“窗口>首选项>Maven>用户设置”下指向正确的设置文件。 - ram

17

按以下简单步骤解决问题: 无法计算构建计划:插件org.apache.maven.plugins:maven-resources-plugin:2.5或其某个依赖项无法解析:未能读取org.apache.maven.plugins:maven-ar-plugin:ar:2.4的工件描述在Eclipse中

输入图像描述

解决方案: 步骤1: 输入图像描述

步骤2:

输入图像描述

问题解决

输入图像描述


强制更新解决了我的问题。 - prageeth

9

在使用Eclipse Kepler和Maven版本3.2时,我遇到了同样的问题。在构建项目时,Eclipse会显示相同的错误。

插件有两个版本(2.5和2.6)在下面。

.m2/repository/org/apache/maven/plugins/maven-resources-plugin/

我移除了2.5版本,然后它就可以正常工作了。


7
似乎这个问题有很多不同的原因。我在安装新版本的Eclipse(Luna)后遇到了这个问题。命令行Maven工作正常,但是Eclipse存在构建问题。
我在JRE中使用了证书授权。这很重要,因为它提供了我在下载Maven资源时的身份验证。尽管我的项目指向Eclipse内部的适当JRE,但Eclipse使用不同的JRE运行(通过Windows任务管理器查看Java进程属性可知)。我的解决方案是在我的eclipse.ini文件中添加以下内容,并明确定义我想要使用的JRE。
-vm
C:\Program Files\Java\jdk1.7.0_51\bin\javaw.exe 

7
我的问题在于配置文件的位置。
在eclipse设置中(Windows->首选项->maven->用户设置),maven的默认配置文件指向C:\users\*yourUser*\.m2\settings.xml。如果你解压缩maven并将其安装在你选择的文件夹中,则文件将位于*yourMavenInstallDir*/conf/,因此可能不在eclipse认为的位置(我的就不在)。如果是这种情况,maven无法正确加载。你只需要将“用户设置”路径设置为正确的文件即可。

5
his issue is happening due to change of protocol from http to https for central repository. please refer following link for more details. https://support.sonatype.com/hc/en-us/articles/360041287334-Central-501-HTTPS-Required 

In order to fix the problem, copy following into your pom.ml file. This will set the repository url to use https.

<repositories>
        <repository>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <releases>
                <updatePolicy>never</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
            <id>central</id>
            <name>Central Repository</name>
            <url>https://repo.maven.apache.org/maven2</url>
        </pluginRepository>
    </pluginRepositories>

4

当使用maven更新项目时,您应该勾选 强制更新快照/发布。这对我有用:-)。Force Update Snapshots/Releases


3

我发现的问题是,虽然m2e默认寻找v2.5版本,但我的本地仓库中有2.6版本而没有2.5版本。

不需要深入研究原因,只需将该依赖项添加到pom中即可解决问题。

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
</dependency>

这可以在运行一次构建后删除。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接