Проблемы с использованием ivy: задача публикации

Я пытаюсь использовать ivy: опубликовать опубликовать банку, которую я построил .репозиторий Айви, но я получаю сообщение об ошибке. Я уверен, что не использую его правильно, поэтому я надеялся, что кто-то может указать мне в правильном направлении.

структура проекта примерно такая:

root--|
      |--src
      |--build
      |      |
      |      |--someorganisation-commonlib-1.0.0.jar
      |
      |--ivy.xml
      |--build.xml

сборка.xml выглядит примерно так:

<target name="publish"> 
        <ivy-publish organisation="someorganisation" resolver="local" module="commonlib" revision="1.0.0">
               <artifacts pattern="build/[organisation]-[module](-[revision])(-[type]).[ext]" />
        </ivy-publish>  
    </target>

Айви.в XML

<?xml version="1.0" encoding="ISO-8859-1"?>
    <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="someorganisation"
            module="commonlib"
            status="integration">
        </info>

    <dependencies>  
            <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/>
            <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/>
            <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/>
        </dependencies>

    </ivy-module>

когда я запускаю строить.xml, я получаю следующее ошибка:

 C:workspaceswkspcsomeprojectbuild.xml:8: someorganization#commonlib;1.0.0: java.lang.IllegalStateException: ivy file not found in cache for someorganization#commonlib;1.0.0: please resolve dependencies before delivering (C:Documents and Settingssomeuser.ivy2cacheresolved-someorganization-commonlib-1.0.0.xml)

1 ответов


вы забыли a публикации раздел в вашем файле ivy.

<ivy-module version="2.0">
    <info organisation="someorganisation" module="commonlib"/>

    <publications>
        <artifact name="commonlib" type="jar"/>
    </publications>

    <dependencies>  
        <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/>
        <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/>
        <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/>
        <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/>
    </dependencies>    
</ivy-module>

на статус и редакция (pubrevision) поля могут быть указаны с помощью публикации задача следующая:

   <ivy:publish resolver="${publish.resolver}" pubrevision="${publish.revision}" status="${publish.status}">
        <artifacts pattern="${build.dir}/[organisation]-[artifact].[ext]"/>
    </ivy:publish>

Примечание 1:

было бы проще создать файл jar без номера редакции в имени. Просто позволь образцу артефакта Айви забрать файл jar.

Примечание. 2:

на каком-то этапе сборки вам потребуется разрешение ivy, иначе файл ivy не будет обработан.