常春藤:发布如何使用[classifier]属性

时间:2010-02-17 12:36:09

标签: ant ivy

在常春藤:发布者默认的deliveryivypattern是$ {ivy.distrib.dir} / [type] s / [artifact] - [revision]( - [classifier])。[ext]

我尝试在我的ivy.xml中设置分类器,方法是在元素中添加属性e:classifier =“”。

但[分类器]没有设定? 当ivy:publish在我的build.xml文件中运行时,它似乎是空的,因此不包含在文件名模式中。

4 个答案:

答案 0 :(得分:6)

我想我已经找到了你的问题。

要明确的是配置的解析程序确定存储库文件名而不是发布任务。这是我的示例,它在工件和常春藤文件名模式中使用了两个额外的属性问候语作者

<ivysettings>
    <property name="repo.dir" value="${ivy.basedir}/build/repo"/>
    <property name="ivy.checksums" value=""/> <!-- Suppress the generation of checksums -->

    <settings defaultResolver="internal"/>

    <resolvers>
        <filesystem name="internal">
            <ivy pattern="${repo.dir}/[module]/[author]-ivy(-[greeting])-[revision].xml" />
            <artifact pattern="${repo.dir}/[module]/[author]-[artifact]-[greeting]-[revision].[ext]" />
        </filesystem>
    </resolvers>
</ivysettings>

额外属性的值由 ivy.xml 文件确定:

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
  <info organisation="myorg" module="hello" e:author="Mark"/>
  <publications>
    <artifact name="English" ext="txt" type="doc" e:greeting="hello"/>
    <artifact name="Irish" ext="txt" type="doc" e:greeting="dia_dhuit"/>
    <artifact name="Spanish" ext="txt" type="doc" e:greeting="Hola"/>
  </publications>
</ivy-module>

当我发布文件时,肯定会出现问候语和作者标签的值:

$ find build -type f
build/repo/hello/Mark-English-hello-1.0.txt
build/repo/hello/Mark-Irish-dia_dhuit-1.0.txt
build/repo/hello/Mark-Spanish-Hola-1.0.txt
build/repo/hello/Mark-ivy-1.0.xml

答案 1 :(得分:2)

我遇到了问题

  

不允许属性分类器出现在元素'artifact'

我只是在声明中添加了“额外”命名空间,并且能够使用分类器。

<ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd" 
       xmlns:e="http://ant.apache.org/ivy/extra"> 

    <dependency org="orphans" name="vaadin-timeline-cval" rev="2.0">
        <artifact name="vaadin-timeline-cval" e:classifier="1.3.1" ext="jar"/>
    </dependency>

答案 2 :(得分:1)

我相信你想要这样的模式。如果没有定义问候语,它将被省略。

[作者] - [工件]( - [问候]) - [修改] [EXT]

答案 3 :(得分:1)

我遇到了同样的问题,我们找到了一种获取额外属性的方法。

我在ivysettings.xml中的示例看起来像......

<resolvers>
<filesystem name="internal">
    <ivy pattern="${repo.dir}/[module]/[author]-ivy(-[greeting])-[revision].xml" />
    <artifact pattern="${repo.dir}/[module]/[author]-[artifact]-[greeting]-[revision].[ext]" />
</filesystem>

并在您的ivy.xml文件中我提出以下内容:请注意,我希望每次发布内容时都将问候值设置为动态值( $ {someValue}

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra">
<info organisation="myorg" module="hello" e:author="Mark"/>
<publications>
    <artifact name="English" ext="txt" type="doc" e:greeting="${someValue}"/>
</publications>

这是诀窍的来源 - &gt;在我调用ivy:publish函数的构建文件中,必须将以下属性设置为true( forcedeliver

<ivy:publish resolver="@{ivy.resolver}"
         pubrevision="@{publish.revision}"
         status="@{status}"
         forcedeliver="true"
         overwrite="@{overwrite}"
         update="true" />

就是这样