我使用的是 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>
无法传输神器 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 似乎无法访问远程中央存储库。
<repositories>
中的
<proxies>
和
settings.xml
就在你的
C:/Users/<Username>/.m2/settings.xml
此外,这是针对特定用户的。 全球一可以出现在:
<Maven-Installation-Directory>/conf/settings.xml
但是,如果找不到全局用户,则更改用户用户可能会解决问题。
同样重要的是,转到 Eclipse/STS 中的首选项:
检查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>
访问
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>
现在应该可以走了。
尝试断开任何公司私人 VPN 并尝试
mvn clean build
。
此错误是由于代理设置造成的。
首先,检查您是否能够从浏览器连接到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
这是由损坏的 Maven 或插件文件夹引起的。要解决此问题:
断开 VPN 连接,然后运行命令。
可能有点晚了,但即使资源/依赖项在该地址不可用,maven 似乎也会抛出未知主机异常。
这可能意味着问题实际上可能是您有一个传递依赖项,该依赖项将您指向错误的 jar 版本(或者多次传递包含的版本 - 其中一个可能是无法解析的版本)。 (我看到它正在寻找插件的版本 2.8,但您指定了版本 3.1.1,因此您可能有另一个依赖项传递包含错误的版本)。
您可以使用 exclusions 标签exclusion 传递包含依赖项。
我们通过在 .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>
这可能是由于默认偏好使用 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