2

我来自 Maven 背景。我正在从事的项目不是基于 Java 的。但是,需要使用独立的 Ivy 进行依赖管理。存储库管理器是 Nexus。

该项目产生了几个 zip 工件,需要通过独立的 Ivy 将它们部署到 Nexus。我想要一个 Maven 分类器的类似物,但对于 Ivy。

这是我的 ivysettings.xml:

<ivysettings>
    <settings defaultResolver="nexus"/>
        <credentials host="localhost"
                     realm="Sonatype Nexus Repository Manager"
                     username="user"
                     passwd="pass"/>

    <property name="nexus-public"
              value="http://localhost:8081/nexus/content/groups/public"/>
    <property name="nexus-releases"
              value="http://localhost:8081/nexus/content/repositories/releases"/>
    <property name="nexus-snapshots"
              value="http://localhost:8081/nexus/content/repositories/snapshots"/>

    <resolvers>
        <ibiblio name="nexus"
                 m2compatible="true"
                 root="${nexus-public}"/>
        <ibiblio name="nexus-releases"
                 m2compatible="true"
                 root="${nexus-releases}"/>
        <ibiblio name="nexus-snapshots"
                 m2compatible="true"
                 root="${nexus-snapshots}"
                 checkmodified="true"
                 changingPattern="*-SNAPSHOT"/>
    </resolvers>
</ivysettings>

我有以下 ivy.xml:

<ivy-module version="2.0">
    <info organisation="kung.fu" module="ninja" revision="1.2.3"/>

    <publications>
        <artifact name="ninja" type="zip" ext="zip"/>
        <artifact name="ninja" type="win32" ext="zip"/>
        <artifact name="ninja" type="linux-x32" ext="zip"/>
        <artifact name="ninja" type="linux-x64" ext="zip"/>
    </publications>
</ivy-module>

我正在尝试按如下方式部署到 Nexus:

java -jar /path/to/ivy.jar
     -settings /path/to/.ivy/ivysettings.xml
     -ivy ivy.xml
     -publish nexus-releases
     -publishpattern "target/[artifact]-[revision](-[classifier]).[ext]"
     -revision 1.2.3
     -status released
     -overwrite

我究竟做错了什么?

4

1 回答 1

3

我认为您缺少分类器字段的特殊额外属性

此外,您需要生成并上传 Maven POM 文件。不幸的是命令行工具不支持这个......

看:

更新

独立 jar 旨在支持发布到存储库,但隐含的理解是它是一个常春藤存储库....

这就解释了为什么要推送 ivy 文件,它是 ivy 模块所需的模块元数据文件。另一方面,Maven 使用 POM 文件作为其模块元数据,这需要创建并发布到 Maven 存储库。

如果您在 ANT 中执行所有这些操作,您将拥有makepom任务来自动生成 POM 文件,并且 ivy发布任务具有可用于禁止上传 ivy.xml 文件的“publishivy”属性。

于 2013-01-30T21:24:19.203 回答