如何使用 Sonatype Nexus 作为 Ivy 依赖项的镜像 [重复]

Posted

技术标签:

【中文标题】如何使用 Sonatype Nexus 作为 Ivy 依赖项的镜像 [重复]【英文标题】:How to use Sonatype Nexus as a mirror for Ivy dependencies [duplicate] 【发布时间】:2016-03-15 23:22:07 【问题描述】:

我喜欢将 Sonatype Nexus 用作公司内部的 maven/ivy 存储库。我的目标是每个请求都发送到 nexus,如果 nexus (尚未)包含请求的工件,它应该将请求委托给官方 maven 存储库。从官方 maven 存储库下载的所有工件都应保存在 nexus 上(作为备份)。此外,我希望能够将我自己的工件保存在服务器上以供其他项目使用(例如内部库)

在过去的项目中,我们设置了一个 Sonatype Nexus 服务器用作 maven 存储库的镜像,它运行良好。现在我正在努力解决一个项目,该项目使用 Ivy 来完成与现有 nexus 安装相同的任务。

在 maven 项目中,我们在 settings.xml 中有以下内容

<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">
    <interactiveMode />
    <usePluginRegistry />
    <offline />
    <pluginGroups />
    <servers>
  <server>
    <id>deployment</id>
    <username>[USERNAME]</username>
    <password>[PASSWORD]</password>
  </server>
</servers>
    <mirrors>
        <mirror>
            <!--This sends everything else to /public -->
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <url>http://mavenserver: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>
    </profiles>
    <activeProfiles>
        <!--make the profile active all the time -->
        <activeProfile>nexus</activeProfile>
    </activeProfiles>
</settings>

如何使用 Ivy 完成相同的任务?

【问题讨论】:

@mark-oconnor:这绝对不是“现有问题的精确副本”,至少不是您指定它的副本。这个是指使用 Nexus 代理 Ivy 存储库和 Maven,您的参考是使用 Ivy 和 Ant。 【参考方案1】:

只要您使用 Ivy 访问 Maven 存储库而不是某些自定义的 Ivy 格式,您就可以使用方法documented in the Nexus Repository Manager documentation。

还可以查看examples project for a working example。

如果您使用 Ant,您还可以使用 Eclipse Aether 代替 Ivy。更多内容请参见文档和示例。

【讨论】:

以上是关于如何使用 Sonatype Nexus 作为 Ivy 依赖项的镜像 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Sonatype Nexus3 搭建私有仓库

如何在端口 80 上运行 nexus sonatype?

如何在Sonatype nexus中配置HTTP严格传输安全性

maven nexus

使用 Sonatype Nexus docker 代理

错误记录使用 Sonatype Nexus 搭建 Maven 私服报错 ( Could not start service. Error code: 1060 )