9

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

当我试图跑步时

mvn 原型:生成

我收到错误消息

[警告] 读取原型目录时出错 http://repo1.maven.org/maven2 org.apache.maven.wagon.authorization.AuthorizationException:访问被拒绝:http ://repo1.maven.org/maven2, 原因短语:拒绝访问。在 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) at org.apache.maven.wagon.StreamWagon.get(StreamWagon.java:61) at org.apache.maven.archetype.source.RemoteCatalogArchetypeDataSource.downloadCatalog(RemoteCatalogArchetypeDataSource.java:119 ) 在 org.apache.maven.archetype.DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:216) 在 org.apache.maven.archetype. DefaultArchetypeManager.getRemoteCatalog(DefaultArchetypeManager.java:205) 在 org. 在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 调用(未知来源)。 codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) [警告] 在远程目录中找不到原型。默认为内部目录 [INFO] 未定义原型。使用 maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) [警告] 在远程目录中找不到原型。默认为内部目录 [INFO] 未定义原型。使用 maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) [警告] 在远程目录中找不到原型。默认为内部目录 [INFO] 未定义原型。使用 maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart: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);
       ....
         }
...
}

所以问题是因为我们在响应中有 HTTP 403 Forbidden 错误。 但我不知道该怎么办...


所以现在我们知道我们收到了 FORBIDDEN 错误,因为我们在 HTTP 请求中没有 User-Agent。感谢帕图什

4

5 回答 5

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

于 2013-08-29T18:09:45.597 回答
5

It seems like Apache central repository has fixed the issue. So without making any change, the problem is fixed now. Please try once again and let us know in case of any issue.

于 2013-09-07T03:05:52.537 回答
3

执行此命令。它不仅会创建您的 maven 项目,还会解决下载原型 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-目录.xml

于 2013-08-30T07:34:18.593 回答
1

它似乎适用于 maven 2(使用 maven 3.05 和 maven 3.1 在 3 台机器 linux 和 windows 上重现了该问题)

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

于 2013-08-29T10:53:57.003 回答
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>
 ...

笔记。刚改成httphttps

于 2021-03-24T08:22:25.270 回答