使用 Ivy-Ant 在 nexus 中发布工件:未经凭据授权?

Posted

技术标签:

【中文标题】使用 Ivy-Ant 在 nexus 中发布工件:未经凭据授权?【英文标题】:Publish artifact in nexus using Ivy-Ant: Unauthorized by Credentials? 【发布时间】:2015-10-13 12:17:21 【问题描述】:

这是我的代码 ivy.xml 文件

    <?xml version="1.0" encoding="UTF-8"?>
    <ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-   instance"  xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd">
        <info organisation="nameOrganisation" module="nameModule" revision="1.0"   status="release" publication="20150723102057">
        </info>
    <publications>
        <artifact name="artifactName" type="jar" ext="jar"/>
    </publications>
        <dependencies>
            <dependency org="org.springframework" name="spring-web-servlet" rev="3.0.5.RELEASE" transitive="false"/>
...

build.xml 文件

<target name="publish" description="Upload to Nexus">
        <ivy:settings id="ivy.settings" file="$ivy.settings">
        <credentials host="host" realm="Sonatype Nexus Repository Manager" username="$repo.username" passwd="$repo.password"/>
        </ivy:settings>
        <ivy:retrieve />
         <ivy:makepom ivyfile="$ivy.file" pomfile="ivy.pom"/>
        <ivy:publish resolver="publish" overwrite="true" publishivy="false" srcivypattern="$ivy.file" settingsRef="ivy.settings" forcedeliver="true" organisation="organisation" module="nameModule" pubrevision="1.0" revision="1.0">
            <artifacts pattern="$lib.app.dir/[artifact](-[classifier]).[ext]"/>
        </ivy:publish>

    </target>

ivysettings-public.xml

<ivysettings>
  <settings defaultResolver="nexus"/>
 <!-- <credentials host="host" realm="Sonatype Nexus Repository Manager" username="user" passwd="pwd"/>-->
  <resolvers>
   <chain name="nexus">
    <ibiblio name="name1" m2compatible="true" root="http://host:8080/nexus/content/repositories/name1/"/>
    <ibiblio name="central" m2compatible="true" root="http://host:8080/nexus/content/repositories/name2/"/>

  </chain>
  </resolvers>
</ivysettings>

当我运行 build.xml 时,我总是得到相同的结果,它会忽略我的凭据吗?还是其他问题?

 buildPublish.xml:39: impossible to publish artifacts for     organisation#nameModule;1.0: java.io.IOException: Access to URL     [http://host:8080/nexus/content/repositories/name1/organisation/nameModule/1.0/n    ameModule-1.0.jar] was refused by the server: Unauthorized

我需要一些想法!!! 谢谢

【问题讨论】:

常春藤设置文件的凭据部分已被注释掉。这可以解释为什么 ivy 会忽略它们.... 【参考方案1】:

有同样的问题。 4 小时后,我找到了解决方案。

我必须在我的凭据中分开主机和端口:

<credentials 
 host="$repo.host"
 port="$repo.port" 
 realm="$repo.realm" 
 username="$repo.username" 
 passwd="$repo.password"/>

【讨论】:

似乎“凭据”节点不支持“端口”属性:ant.apache.org/ivy/history/2.4.0/settings/credentials.html

以上是关于使用 Ivy-Ant 在 nexus 中发布工件:未经凭据授权?的主要内容,如果未能解决你的问题,请参考以下文章

从 nexus 获取最新的构建工件

在 nexus 中存储 maven 工件的最佳实践

如何使用 ivy 和 nexus 发布 3rdparty 工件

配置 Maven 或 Nexus 以在静态 URL 链接主干工件

如何仅发布 Nexus Staging 存储库中的部分工件

如何将 Jenkins 中的特定工件部署到 Nexus 中?