当前位置: 首页 > 知识库问答 >
问题:

Nexus没有缓存maven central插件

林涵映
2023-03-14

我正在使用Maven 3.0.4和Nexus 2.0.6。我已经按照Nexus说明设置了我的settings.xml,以便使用单个存储库。当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中心,命令就会工作。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>

共有3个答案

涂浩皛
2023-03-14

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

例如,在Maven Central中有一个工件org.blabla:blabla api:1.0。但是,您已经设置了一个路由匹配*/org/blabla/*,强制所有匹配请求仅在代理存储库blabla public中查找。。。但不幸的是,blablapublic不包含该特定工件。

解决方案:更新路由以将Central添加到路由使用的回购列表中,或删除路由。

(这可能不是OP的原因,但我会发布它,以防对其他访客有所帮助。)

谭研
2023-03-14

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

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文件以了解有关故障的更多信息。

公冶子安
2023-03-14

确保正确配置了中心代理存储库,并且代理的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

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

如果您使用的是代理,则可以在“管理”中的“默认HTTP代理设置”(可选)部分下配置代理-

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

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

 类似资料:
  • ok;我的第一个stackoverflow问题。 我一直在尝试使用我们的本地Nexus从外部存储库下载工件,并从外部存储库中自动检索这些工件,以防它们不存在。并以这种方式缓存它们。 我正在使用Ant和Ivy来处理依赖关系。 这个问题或多或少与这个问题类似:常春藤通过Nexus代理。我的理解的最终答案确实允许使用Nexus作为存储库,但它没有缓存(至少对我来说没有)。 我见过很多围绕这个主题的材料,

  • 未使用其缓存。 生成与此相同的输出: 我正在修改Dockerfile,在文件末尾添加命令。所以前面的层应该被缓存并且有效。 我有足够的磁盘空间。 有什么想法吗? Docker版本17.06.1-ce,构建874a737 Dockerfile:

  • 请查阅插件的README nutz-plugins-daocache Git@OSC镜像

  • egg-redis 文档:https://www.npmjs.com/package/egg-redis 安装:npm i egg-redis --save 开启插件: Change ${app_root}/config/plugin.js to enable redis plugin: exports.redis = { enable: true, package: 'egg-redi

  • 问题内容: 我读过,为避免在nodejs中缓存,必须使用: 但是我不知道如何使用它,因为当我在代码中添加该行时会出错。 我的功能(我认为我必须不编程缓存)是: 有人知道如何在我的代码中不放置任何缓存吗?谢谢 问题答案: 您已经编写了标题。我认为您完成此操作后无法添加更多内容,因此只需将标题放在第一个对象中即可。

  • 问题内容: 我知道在该主题上也有类似的帖子,但是它们并没有完全解决我的问题。当您这样做时: (显然)大多数时间都会打印,因为以某种方式缓存了[-128,127]范围内的整数。但: 会回来的。我知道我正在请求一个Integer的新实例,但是由于装箱的原语在Java中是不可变的,并且已经有了执行“正确的事情”的机制(如第一种情况所示),为什么会发生这种情况? 如果Integer的所有实例(具有10)都