从IVY访问内部Maven仓库

3

我们使用Sonatype Maven仓库。这对于我们的Maven项目非常好,但是我们有一个遗留应用程序使用Ant+IVY进行依赖管理,现在需要从Maven获取依赖。

我的IVY设置文件如下:

<ivysettings>
    <property name="dsnexus-root" value="http://internal-url/" override="false"/>

    <credentials host="hostname" username="username" passwd="XXXX"/>

    <!-- ... -->

    <resolvers>
        <chain name="shared">
            <url name="shared-default">
                <!-- ... -->
            </url>
            <url name="dsnexus-public" m2compatible="true">
                <artifact pattern="${dsnexus-root}/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"/>
            </url>
        </chain>
    </resolvers>

    <modules>
        <module organisation=".*" name=".*" resolver="shared"/>
    </modules>

    <!-- ... -->
</ivysettings>

但当我尝试解决我的依赖关系时,它无法在内部仓库中找到任何内容。
例如:
module not found: xerces#xercesImpl;2.9.1
==== shared-default: tried
...
==== dsnexus-public: tried
-- artifact xerces#xercesImpl;2.9.1!xercesImpl.jar:
http://internal-url/xerces/xercesImpl/2.9.1/xercesImpl-2.9.1.jar

当然,该网址上确实存在dep。

我也尝试过

<ibiblio name="dsnexus-public" 
    root="${dsnexus-root}" 
    m2compatible="true" 
    namespace="maven2"/>

并且得到了相同的结果。

我猜测是我的凭证出现了问题。

3个回答

3
您还应该在凭据中指定领域,示例代码如下:
<credentials host="hostname" realm="Sonatype Nexus Repository Manager" username="username" passwd="xxx"/>

嗯,我会试试这个。我想知道如何发现领域的实际名称? - Paul McKenzie

2

这里,试一下这个:

<ivysettings>
  <settings defaultResolver="nexus" 
            checkUpToDate="true" />

  <credentials host="localhost" 
           realm="Sonatype Nexus Repository Manager" 
           username="admin"
           passwd="admin123"/>
  <resolvers>
    <ibiblio name="nexus" m2compatible="true" 
             root="http://localhost:8081/nexus/content/groups/public/"/>
    <url name="releases" m2compatible="true">
        <artifact pattern="http://localhost:8081/nexus/content/repositories/releases/[organization]/[module]/[revision]/[artifact]-[revision].[ext]"/>
        <ivy pattern="http://localhost:8081/nexus/content/repositories/releases/[organization]/[module]/[revision]/ivy-[revision].xml"/>
    </url> 
  </resolvers>
</ivysettings>

对我来说,在Nexus 1.7.1上完美运行。如果您有任何问题,请告诉我。


0

我通常在与Nexus交互时使用ibiblio解析器。

<ibiblio name="reponame" m2compatible="true" root="http://nexus-url/reponame"/>

您是否位于代理服务器后面?这只是我的纯猜测。我正在尝试确定为什么 ivy 无法检索通过您的 Web 浏览器存在的 URL。尝试以详细模式运行 ANT,您将获得更多详细信息,可能会有助于解决故障。 - Mark O'Connor

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