10

我使用 Maven 3.0.4 和 Nexus 2.0.6。我已将我的 settings.xml 设置为使用单个存储库的 Nexus 指令显示。当 maven 尝试运行 maven -U clean 时出现以下错误。

[ERROR] Plugin org.apache.maven.plugins:maven-clean-plugin:2.4.1 or one of its d
ependencies could not be resolved: Failed to read artifact descriptor for org.ap
ache.maven.plugins:maven-clean-plugin:jar:2.4.1: Could not find artifact org.apa
che.maven.plugins:maven-clean-plugin:pom:2.4.1 in nexus (http://localhost:8081/n
exus/content/groups/public) -> [Help 1]

如果我从设置中删除 nexus 镜像并直接转到 maven Central,则该命令有效。nexus 中的 maven repo 的设置显示它正在服务中并且它在公共组中(最后列出)。

我不在代理访问互联网的后面。

这是我的 settings.xml

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<offline>false</offline>
<mirrors>
    <mirror>
        <!--This sends everything else to /public -->
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <url>http://localhost:8081/nexus/content/groups/public</url>
    </mirror>
</mirrors>
<profiles>
    <profile>
        <id>nexus</id>
        <!--Enable snapshots for the built in central repo to direct -->
        <!--all requests to nexus via the mirror -->
        <repositories>
            <repository>
                <id>central</id>
                <url>http://central</url>
                <releases><enabled>true</enabled></releases>
                <snapshots><enabled>true</enabled></snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>central</id>
                <url>http://central</url>
                <releases><enabled>true</enabled></releases>
                <snapshots><enabled>true</enabled></snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
    <profile>
        <id>maven-central</id>
        <!--Enable snapshots for the built in central repo to direct -->
        <!--all requests to nexus via the mirror -->
        <repositories>
            <repository>
                <id>central</id>
                <url>http://repo1.maven.org/maven2/</url>
                <releases><enabled>true</enabled></releases>
                <snapshots><enabled>true</enabled></snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>central</id>
                <url>http://repo1.maven.org/maven2/</url>
                <releases><enabled>true</enabled></releases>
                <snapshots><enabled>true</enabled></snapshots>
            </pluginRepository>
        </pluginRepositories>
     </profile>
</profiles>
    <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>nexus</activeProfile>
</activeProfiles>


</settings>
4

3 回答 3

5

确保Central代理存储库配置正确,代理 URL 为http://repo1.maven.org/maven2/. 检查您是否可以在存储库的 URL 中看到缓存的工件,应该是http://localhost:8081/nexus/content/repositories/central/org/apache/maven/plugins/maven-clean-plugin/2.4.0/maven-clean-plugin-2.4.1.pom.

确保您有一个 Central 代理,是否有任何内容列在http://localhost:8081/nexus/content/repositories/central/.

如果您使用代理,您可以在Administration->Nexus窗格的Default HTTP Proxy Settings (optional)部分下配置代理。

然后,确保将Public Repositories组存储库配置为将Central存储库包含在其包含的存储库列表中。

如果到目前为止一切正常,请检查日志,也许那里有一条有用的消息。

于 2012-12-21T06:23:54.153 回答
3

尝试通过网络浏览器直接下载:

http://localhost:8081/nexus/content/groups/public/org/apache/maven/plugins/maven-clean-plugin/2.4.1/maven-clean-plugin-2.4.1.pom

如果这不起作用,请检查 sonatype-work/nexus/logs/nexus.log 文件以获取有关失败的更多信息。

于 2012-07-03T17:03:12.797 回答
1

我有与 OP 相同的症状(Nexus 没有镜像工件),发现它是由路由定义引起的。

例如,您有一个org.blabla:blabla-api:1.0位于 Maven 中心的工件。但是,您已经设置了一个路由匹配.*/org/blabla/.*,它强制任何匹配的请求仅在代理存储库中blabla-public查看......但不幸blabla-public的是不包含那个特定的工件。

解决方案:要么更新路由,将 Central 添加到路由使用的 repos 列表中,要么删除路由。

(这可能不是 OP 的原因,但我发布它以防它帮助任何其他访问者。)

于 2018-07-25T13:10:39.980 回答