Maven Nexus私有仓库访问

3
我刚刚在本地网络中设置了一个nexus仓库。该仓库向外部公开访问Maven中央仓库,以及三个不同的私有托管仓库:snapshotreleaseext3rdparty。这些仓库都是nexus中public group的一部分,我将其用作所有仓库的中央访问点:http://nexus.server/nexus/content/groups/public/ 我的问题是:在NetBeans开发环境中,我可以访问所有仓库,除了ext3rdparty。也就是说,当我尝试构建基于存储在ext3rdparty仓库中的库的项目时,会出现编译错误,并且NetBeans无法找到/导航任何可用于此仓库的工件。
我怀疑这是一个settings.xml/pom.xml的问题,而不是NetBeans的问题,因为正如我所说,我可以访问在其他仓库中发布的工件,但我无法弄清楚问题所在。
以下是我的settings.xml文件的完整内容,用于将maven重定向到我自己的仓库:
<mirrors>
    <mirror>
        <id>nexus</id>
        <mirrorOf>*</mirrorOf>
        <url>http://nexus.server/nexus/content/groups/public</url>
    </mirror>
</mirrors>

<profiles>
    <profile>
        <id>nexus</id>
        <repositories>
            <repository>
                <id>central</id>
                <url>http://central</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
                <id>central</id>
                <url>http://central</url>
                <releases>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </releases>
                <snapshots>
                    <enabled>true</enabled>
                    <updatePolicy>always</updatePolicy>
                </snapshots>
            </pluginRepository>
        </pluginRepositories>
    </profile>
</profiles>

<activeProfiles>
    <activeProfile>nexus</activeProfile>
</activeProfiles>

<servers>
    <server>
        <id>nexus</id>
        <username>user</username>
        <password>***</password>
    </server>
    <server>
        <id>releases</id>
        <username>user</username>
        <password>***</password>
    </server>
    <server>
        <id>snapshots</id>
        <username>user</username>
        <password>***</password>
    </server>
</servers>

这里是我父POM中与仓库相关的部分,用于允许部署:

        <distributionManagement>
            <repository>
                <id>releases</id>
                <name>Releases</name>
                <url>http://nexus.server/nexus/content/repositories/releases/</url>
            </repository>

            <snapshotRepository>
                <id>snapshots</id>
                <name>Snapshots</name>
                <url>http://nexus.server/nexus/content/repositories/snapshots/</url>
            </snapshotRepository>
        </distributionManagement>

有什么问题吗?

提前感谢!

编辑

浪费了半天时间:最终我决定从ext3rdparty存储库中删除所有依赖项,并将它们重新上传到存储库中,然后更新所有索引,现在一切都正常了...

不知道问题出在哪里,但至少pom和设置是正确的。感谢您的帮助。


2
你尝试过从命令行使用Maven构建吗?它是否与NetBeans一样失败了? - prunge
这也可能是一个Nexus配置问题。您能否通过浏览器访问ext3rdparty存储库的内容? - Raghuram
在使用命令行构建Maven时遇到了相同的问题(这也是NetBeans的做法)。是的,我可以通过浏览器访问nexus的内容。我目前正在查看代理存储库,但我不明白为什么我可以访问中央而无法访问应该属于公共组的第三方存储库... - ecniv
如果您还没有进行完整的重新索引,建议尝试一下。删除/重新上传也会达到同样的效果(重建索引)。 - Michael
很高兴看到问题已经解决。Nexus提供“定期任务”来定期清理缓存、重新索引等。这些任务可以防止出现类似这样的奇怪问题。 - wemu
显示剩余4条评论
2个回答

1
你是否将你的ext3rdparty仓库添加到了公共组中?

public repo configuration


1
如果您遇到这种问题,可以在“存储库”列表中右键单击受影响的存储库,激活“修复索引”或“更新索引”,然后在“系统更新”的“系统源”中检查状态。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接