2015-03-05 2 views
0

До сих пор я только генерируя dist/imasUtils.jar файл в сборке (используя Ant), и publiching его следующим Ant код:Ошибка при попытке не использовать дополнительный маркер в артефактами шаблон

<ivy:resolve/> 
<ivy:publish resolver="imas-ssh" overwrite="true" publishivy="true"> 
    <artifacts pattern="dist/[artifact].[ext]"/> 
</ivy:publish> 

До сих пор , это сработало, но теперь я хочу опубликовать также источник, поэтому я также генерирую dist/imasUtils_src.zip. According to my understanding of the ivy manual, я мог бы сделать это:

<ivy:resolve/> 
<ivy:publish resolver="imas-ssh" overwrite="true" publishivy="true"> 
    <artifacts pattern="dist/[artifact](_[type]).[ext]"/> 
</ivy:publish> 

и будет понятно, как мои файлы dist/imasUtils.jar и dist/imasUtils_src.zip, единственное отличие состоит в том, что, когда я опубликовал их атрибут type будет null для файла банки.

Вместо этого я получаю следующее сообщение об ошибке:

/[myDirectory]/build.xml:119: impossible to publish artifacts for net.conselldemallorca.imas#imasUtils;1.2.0: 
java.io.IOException: missing artifact net.conselldemallorca.imas#imasUtils;1.2.0!imasUtils.jar 
    at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:225) 
    at org.apache.ivy.core.publish.PublishEngine.publish(PublishEngine.java:172) 
    at org.apache.ivy.Ivy.publish(Ivy.java:621) 
    at org.apache.ivy.ant.IvyPublish.doExecute(IvyPublish.java:311) 
    at org.apache.ivy.ant.IvyTask.execute(IvyTask.java:271) 
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:292) 
    at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    ... 

Мой ivy.xml файл:

<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="net.conselldemallorca.imas" 
    module="imasUtils" revision="${ivy.revision}"/> 

    <publications> 
    <artifact /> 
    </publications> 
</ivy-module> 

и моя организация ivy-settings.xml файл:

<ivysettings> 
    <property name="ivy.pattern" value="artifacts/[organisation]/[module]/r[revision]/ivy-[revision].xml" override="false"/> 
    <property name="artifact.pattern" value="artifacts/[organisation]/[module]/r[revision]/[artifact].[ext]" override="false"/> 
    <settings defaultResolver="shared"/> 
    <resolvers> 
    <ssh name="imas-ssh" host="MYHOST" publishPermissions="0770"> 
     <ivy pattern="/var/www/html/Ivy/${ivy.pattern}"/> 
     <artifact pattern="/var/www/html/Ivy/${artifact.pattern}"/> 
    </ssh> 
    <chain name="shared"> 
     <url name="imas"> 
     <ivy pattern="http://ivy.proves.imasmallorca.net/Ivy/${ivy.pattern}"/> 
     <artifact pattern="http://ivy.proves.imasmallorca.net/Ivy/${artifact.pattern}"/> 
     </url> 
     <ibiblio name="public" m2compatible="true"/> 
    </chain> 
    </resolvers> 
</ivysettings> 

Я использую Apache Ant 1.9.3 и Ivy 2.4.0

ответ

3

Я подозреваю, что проблема может заключаться в том, как вы определили «тип» в шаблоне. Вам также необходимо объявить более одного файла в разделе публикаций ваших плющ-файлов.

Я предлагаю следующие изменения в файл плющ:

<ivy-module version="2.0" xmlns:e="http://ant.apache.org/ivy/extra"> 

    <publications> 
     <artifact name="imasUtils" type="jar"/> 
     <artifact name="imasUtils" type="zip" e:classifier="src"/> 
    </publications> 

И соответствующие изменения в шаблоне по задаче Опубликовать в:

<ivy:publish .. > 
    <artifacts pattern="dist/[artifact](_[classifier]).[ext]"/> 
</ivy:publish> 

«классификатор» является примером пользовательской extra attribute.

Пример:

Следующая ссылка дает дополнительные пояснения о том, как плющ взаимодействует с Maven РЕПО, который имеет фиксированное понимание атрибута «источников».

+0

Спасибо очень много. В конце концов это сработало, но мне также пришлось изменить свой файл ivysettings.xml, чтобы изменить шаблон артефакта. – SJuan76

Смежные вопросы