如何使用多个分类器发布常春藤项目?

时间:2013-01-30 17:57:21

标签: ivy nexus

我来自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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

我认为你错过了分类器字段的特殊extra attribute

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

请参阅:

更新

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

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

如果你是在ANT中完成所有这些工作,那么你有makepom任务自动生成POM文件,而常春藤publish任务有一个“publishivy”属性,可以用来压制上传ivy.xml文件。