Maven,访问被拒绝:http://repo1.maven.org/maven2

时间:2013-08-28 18:21:51

标签: java maven build compilation

我刚刚下载了Maven的最新版本。

当我试图运行时

  

mvn archetype:generate

我收到错误消息

  

[警告]读取原型目录时出错   http://repo1.maven.org/maven2   org.apache.maven.wagon.authorization.AuthorizationException:Access   拒绝:http://repo1.maven.org/maven2,ReasonPhrase:拒绝访问。   在   org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon.fillInputData(AbstractHttpClientWagon.java:928)   在   org.apache.maven.wagon.StreamWagon.getInputStream(StreamWagon.java:116)   在org.apache.maven.wagon.StreamWagon.getIfNewer(StreamWagon.java:88)   在org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61)at   org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.downloadCatalog(RemoteCatalogArchetypeDataSource.java:119)   在   org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.getArchetypeCatalog(RemoteCatalogArchetypeDataSource.java:87)   在   org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:216)   在   org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:205)   在   org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.getArchetypesByCatalog(DefaultArchetypeSelector.java:200)   在   org.apache.maven.archetype.ui.generation.DefaultArchetypeSelector.selectArchetype(DefaultArchetypeSelector.java:71)   在   org.apache.maven.archetype.mojos.CreateProjectFromArchetypeMojo.execute(CreateProjectFromArchetypeMojo.java:197)   在   org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)   在   org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)   在   org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)   在   org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)   在   org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)   在   org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)   在   org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)   在   org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)   在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)at at   org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)at   org.apache.maven.cli.MavenCli.execute(mavenCli.java:537)at at   org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)at at   org.apache.maven.cli.MavenCli.main(MavenCli.java:141)at at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)at   sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)at   java.lang.reflect.Method.invoke(未知来源)at   org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)   在   org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)   在   org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)   在   org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)   [警告]在远程目录中找不到原型。违约到内部   catalog [INFO]没有定义原型。使用maven-archetype-quickstart   (org.apache.maven.archetypes:行家-原型-快速入门:1.0)

我没有代理和互联网工作正常。防火墙已关闭。如何解决这个问题?

感谢您的帮助。

如果我们期待班级org.apache.maven.wagon.shared.http4.AbstractHttpClientWagon 方法fillInputData(InputData inputData)我们可以看到:

public void fillInputData( InputData inputData )
       throws TransferFailedException, ResourceDoesNotExistException,AuthorizationException
    {
     ....
 HttpResponse response;
     ....
 statusCode = response.getStatusLine().getStatusCode();
     ....
 switch ( statusCode )
        {
            case HttpStatus.SC_OK:
                break;

            case HttpStatus.SC_NOT_MODIFIED:
                // return, leaving last modified set to original value so getIfNewer should return unmodified
                return;

            case SC_NULL:
            {
                TransferFailedException e =
                    new TransferFailedException( "Failed to transfer file: " + url + reasonPhrase );
                fireTransferError( resource, e, TransferEvent.REQUEST_GET );
                throw e;
            }

            case HttpStatus.SC_FORBIDDEN:    // <---------THIS
                fireSessionConnectionRefused();
                throw new AuthorizationException( "Access denied to: " + url + reasonPhrase);
       ....
         }
...
}

So problem caused because we have HTTP 403 Forbidden error in response. 但我不知道该怎么做......


现在我们知道我们收到了FORBIDDEN错误,因为我们在HTTP请求中没有User-Agent。 Thanx to Patouche

5 个答案:

答案 0 :(得分:11)

好像http://repo1.maven.org/maven2上的目录浏览已被关闭。我不得不求助于获取原型目录。我这样做了:

mvn archetype:generate -DarchetypeCatalog=http://search.maven.org/remotecontent?filepath=archetype-catalog.xml

或者我想您可以从该链接下载archetype-catalog.xml文件并将其放在.m2目录中,如本评论中所述:

http://jira.codehaus.org/browse/ARCHETYPE-202?focusedCommentId=182771&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-182771

答案 1 :(得分:5)

似乎Apache中央存储库已经解决了这个问题。所以没有做任何改变,现在问题就解决了。如果有任何问题,请再试一次并告诉我们。

答案 2 :(得分:3)

执行此命令。它不仅会创建你的maven项目,还会解决下载archetype jar的问题。这主要是由于原型URL不可用。

使用您的项目名称填写项目组ID。

mvn archetype:generate -DgroupId = {Project Group Id} -DartifactId = {Project Id} -DarchetypeArtifactId = maven-archetype-webapp -DinteractiveMode = false -DarchetypeCatalog = http://search.maven.org/remotecontent?filepath=archetype-catalog.xml

答案 3 :(得分:1)

它似乎与maven 2一起工作(在3台机器linux和windows上使用maven 3.05和maven 3.1重现问题)

问题仅发生在repo1 ...网址上。如果删除本地存储库,所有插件下载都将正常工作,直到下载原型目录 - “访问被拒绝”

答案 4 :(得分:0)

我遇到了这样的问题:

>mvn archetype:generate -DgroupId=... -DartifactId=... -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false 
[INFO] Scanning for projects...
.  .  .
[WARNING] Error reading archetype catalog http://repo1.maven.org/maven2
org.apache.maven.wagon.TransferFailedException: Failed to transfer file: http://repo1.maven.org/maven2. Return code is: 501 , ReasonPhrase:HTTPS Required.
.  .  .
[WARNING] No archetype found in remote catalog. Defaulting to internal catalog
.  .  .

项目生成成功,但消息不好看。

我通过将 archetypeCatalog 属性添加到我的 settings.xml 中解决了这个问题:

<settings>
  <profiles>
    <profile>
      <id>defaultProfile</id>
      <properties>
        ...
        <archetypeCatalog>https://repo1.maven.org/maven2</archetypeCatalog>
      </properties>
 ...

注意。刚刚将 http 更改为 https