Как ivy: publish использует атрибут [classifier] - PullRequest
7 голосов
/ 17 февраля 2010

в ivy: для издателя стандартным значением по умолчанию является $ {ivy.distrib.dir} / [тип] s / [артефакт] - [редакция] (- [классификатор]). [Ext]

Я пытаюсь установить классификатор в своем ivy.xml, добавив атрибут e: classifier = "" к элементу.

Но [классификатор] не устанавливается? Когда ivy: publish запускается в моем файле build.xml, он кажется пустым и, следовательно, не включается в шаблон имени файла.

Ответы [ 4 ]

6 голосов
/ 19 февраля 2010

Мне кажется, я понял вашу проблему.

Для ясности, именно сконфигурированный распознаватель определяет имя файла репозитория, а не задачу publish . Вот мой пример, который использует два дополнительных атрибута приветствие и author в шаблонах имен файлов артефактов и плюща:

<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
2 голосов
/ 10 августа 2012

У меня была проблема с

Классификатор атрибутов не может появляться в элементе 'артефакт'

Я просто добавил «дополнительное» пространство имен в своем объявлении и смог использовать классификатор.

<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>
1 голос
/ 30 ноября 2011

Я столкнулся с той же проблемой, и мы нашли способ получить дополнительный атрибут.

мой пример в 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>

Вот в чем дело -> В моем файле сборки, где я вызываю функцию ivy: publish, для следующего атрибута должно быть установлено значение true ( forcedeliver )

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

Вот и все

1 голос
/ 10 августа 2010

Полагаю, вы хотите такой шаблон. Если приветствие не определено, оно будет пропущено.

[автор] - [артефакт] (- [приветствие]) -. [Пересмотр] [доб]

...