Maven 安装错误:无法解析依赖关系

问题描述 投票:0回答:8

我使用的是 Maven 3.1.1。当我运行

mvn install
时,出现以下错误:

D:\spring source>mvn install
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building SpringDependencies 1.0
[INFO] ------------------------------------------------------------------------
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/maven-
dependency-plugin/2.8/maven-dependency-plugin-2.8.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.648s
[INFO] Finished at: Mon Dec 16 15:01:47 IST 2013
[INFO] Final Memory: 4M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Plugin org.apache.maven.plugins:maven-dependency-plugin:2.8 or one of it
s dependencies could not be resolved: Failed to read artifact descriptor for org
.apache.maven.plugins:maven-dependency-plugin:jar:2.8: Could not transfer artifa
ct org.apache.maven.plugins:maven-dependency-plugin:pom:2.8 from/to central (htt
p://repo.maven.apache.org/maven2): repo.maven.apache.org: Unknown host repo.mave
n.apache.org -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
ch.
[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 rea
d the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResoluti
onException

我的

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>
  <groupId>spring-source-download</groupId>
  <artifactId>SpringDependencies</artifactId>
  <version>1.0</version>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
  <dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.0.RELEASE</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
              <execution>
                <id>download-dependencies</id>
                  <phase>generate-resources</phase>
                    <goals>
                      <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                      <outputDirectory> ${project.build.directory}/dependencies </outputDirectory>
                    </configuration>
              </execution>
            </executions>
      </plugin>
    </plugins>
  </build>
</project>
maven maven-3
8个回答
14
投票

无法传输神器 org.apache.maven.plugins:maven-dependency-plugin:pom:2.8 从/到 中央(http://repo.maven.apache.org/maven2):repo.maven.apache.org: 未知主机 repo.maven.apache.org

您的 Maven 似乎无法访问远程中央存储库。

  • 检查您是否已建立互联网连接。
  • 检查是否可以在浏览器中访问默认的 Maven 存储库 http://repo.maven.apache.org/maven2
  • 检查您的
    <repositories>
     中的 
    <proxies>
    settings.xml
  • 中的配置是否正确

6
投票

我的Settings.xml在哪里?

Windows 用户

就在你的

C:/Users/<Username>/.m2/settings.xml

此外,这是针对特定用户的。 全球一可以出现在:

<Maven-Installation-Directory>/conf/settings.xml

但是,如果找不到全局用户,则更改用户用户可能会解决问题。

同样重要的是,转到 Eclipse/STS 中的首选项:

  • 转到 Maven -> 用户设置 并验证属性中是否提及了全局和用户 settings.xml 文件,如果没有通过浏览提及它们。

1.代理问题

检查Windows 代理设置。 如果您的计算机正在使用任何代理,那么您也需要在 settings.xml 文件中添加代理设置。

只需将这段代码添加到您的

settings.xml

<proxies>
   <proxy>
      <id>proxy-id</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>ca-something.net</host>
      <port>80</port>
      <nonProxyHosts>localhost|10.140.240.90.*</nonProxyHosts>
    </proxy>
  </proxies> 

2.协议问题

访问

http://repo.maven.apache.org/
:如果显示需要 https。

然后,您需要将这段代码添加到您的settings.xml中

<mirrors>

<mirror>
  <id>central-secure</id>
  <url>https://repo.maven.apache.org/maven2</url>
  <mirrorOf>central</mirrorOf>
</mirror>

现在应该可以走了。

3.以上都不起作用

尝试断开任何公司私人 VPN 并尝试

mvn clean build


4
投票

此错误是由于代理设置造成的。

首先,检查您是否能够从浏览器连接到maven存储库(http://repo1.maven.org/maven2)。

然后更新 Maven 代理设置,在 .m2 目录中创建/更新 settings.xml,其中包含以下详细信息:

 <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>{your proxy server host name}</host>
      <port>{your proxy server port}</port>
      <nonProxyHosts>maven</nonProxyHosts>
    </proxy>
  </proxies>

Maven社区给出的解决方案:http://maven.apache.org/guides/mini/guide-proxies.html


4
投票

这是由损坏的 Maven 或插件文件夹引起的。要解决此问题:

  1. 删除\.m2 epository\org pache\maven
  2. mvn 依赖:解析 -X

3
投票

断开 VPN 连接,然后运行命令。


0
投票

可能有点晚了,但即使资源/依赖项在该地址不可用,maven 似乎也会抛出未知主机异常。

这可能意味着问题实际上可能是您有一个传递依赖项,该依赖项将您指向错误的 jar 版本(或者多次传递包含的版本 - 其中一个可能是无法解析的版本)。 (我看到它正在寻找插件的版本 2.8,但您指定了版本 3.1.1,因此您可能有另一个依赖项传递包含错误的版本)。

您可以使用 exclusions 标签exclusion 传递包含依赖项。


0
投票

我们通过在 .m2/settings.xml 中提供正确的代理主机解决了这个问题。

示例:

<proxies>
   <proxy>
      <id>XXXXXXXXXX</id>
      <active>true</active>
      <protocol>http</protocol>
      <host>na-xxxx-proxy.na.xxxxxxxxxx.net</host>
      <port>80</port>
      <nonProxyHosts>localhost|10.140.240.90.*</nonProxyHosts>
    </proxy>
  </proxies> 

0
投票

这可能是由于默认偏好使用 IPv6 造成的。你可以发现它添加

-e
参数到你的maven命令(如
mvn clean install -e
) - 它会打印失败的堆栈跟踪。在这种情况下,它看起来像:

Caused by: java.net.UnknownHostException: repo.maven.apache.org: nodename nor servname provided, or not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr (Native Method)
    at java.net.InetAddress$PlatformNameService.lookupAllHostAddr (InetAddress.java:933)
    at java.net.InetAddress.getAddressesFromNameService (InetAddress.java:1529)
    at java.net.InetAddress$NameServiceAddresses.get (InetAddress.java:852)
    at java.net.InetAddress.getAllByName0 (InetAddress.java:1519)
    at java.net.InetAddress.getAllByName (InetAddress.java:1377)
    at java.net.InetAddress.getAllByName (InetAddress.java:1305)
    at org.apache.http.impl.conn.SystemDefaultDnsResolver.resolve (SystemDefaultDnsResolver.java:45)
...

要解决这个问题,请通过文件添加maven参数

.mvn/jvm.config
(如果不存在则创建):

-Djava.net.preferIPv4Stack=true

顺便说一句,您可以将此文件用于其他 Maven jvm 选项,例如

-Djava.awt.headless=true -Xmx1024m -Djava.net.preferIPv4Stack=true
© www.soinside.com 2019 - 2024. All rights reserved.