Проблемы с использованием плюща

Я новичок в плюще.

  1. Я использую преобразователь упаковщика, и этот преобразователь упаковщика разрешает zip-файл, распаковывает его, извлекает из него файл jar во временном файле сборки, но он остается временно, и только файл jar, который я указал как имя модуля, копируется в остальную часть назначения. все игнорируются. Есть ли способ получить все файлы jar? Я использую preseverBuildDirectories, но есть ли лучший способ сделать это?

  2. Также возможно ли опубликовать артефакт в svn, используя обычный ivy? У меня возникла ошибка, когда я пытался использовать ivy 2.1.0 на XP, используя ant 1.8.0 java.illegalArguementException, говоря, что авторизация не удалась. Есть ли способ работать через ivy:publish?

  3. Есть ли способ использовать переменную ivy в packager.xml?

Заранее спасибо, Алмас


ivy
person Almas    schedule 20.05.2010    source источник
comment
Существует преобразователь, который можно использовать для хранения артефактов в subversion code.google.com/p/ivysvn< /а>   -  person Mark O'Connor    schedule 21.05.2010


Ответы (1)


1) Резолвер пэкиджера

Вам необходимо включить файл ivy для переупакованного модуля со списком всех артефактов.

Вот мой пример, который загружает файлы, связанные с дистрибутивом Solr.

ivysettings.xml

<ivysettings>
    <settings defaultResolver="maven2"/>

    <caches defaultCacheDir="${user.home}/.ivy2/cache"/>

    <resolvers>
        <ibiblio name="maven2" m2compatible="true"/>

        <packager name="repackage" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="false">
            <ivy pattern="file:///${ivy.settings.dir}/packager/[organisation]/[module]/ivy-[revision].xml"/>
            <artifact pattern="file:///${ivy.settings.dir}/packager/[organisation]/[module]/packager-[revision].xml"/>
        </packager>
    </resolvers>

    <modules>
        <module organisation="org.apache.solr" name="solr" resolver="repackage"/>
    </modules>
</ivysettings>

Обратите внимание, как преобразователь упаковщика указывает путь как к файлу ivy, так и к файлу упаковщика.

Файл ivy указывает артефакты, которые являются частью пакета, в разделе publications.

упаковщик/org.apache.solr/solr/ivy-1.4.0.xml

<ivy-module version="2.0">
    <info organisation="org.apache.solr" module="solr" revision="1.4.0"/>
    <configurations>
        <conf name="jars"    description="Jars released with SOLR distribution"/>
        <conf name="webapps" description="Web applications"/>
    </configurations>
    <publications>
        <!-- jars -->
        <artifact name="solr-cell" conf="jars"/>
        <artifact name="solr-clustering" conf="jars"/>
        <artifact name="solr-core" conf="jars"/>
        <artifact name="solr-dataimporthandler" conf="jars"/>
        <artifact name="solr-dataimporthandler-extras" conf="jars"/>

        <!-- webapps -->
        <artifact name="solr" type="war" conf="webapps"/>
    </publications>
</ivy-module>

Файл упаковщика содержит логику, которая копирует каждый артефакт, указанный в файле ivy, для модуля solr.

packager/org.apache.solr/solr/packager-1.4.0.xml

<packager-module version="1.0">

    <property name="name" value="${ivy.packager.module}"/>
    <property name="version" value="${ivy.packager.revision}"/>

    <resource dest="archive" url="http://ftp.heanet.ie/mirrors/www.apache.org/dist/lucene/solr/1.4.0/apache-solr-1.4.0.tgz" sha1="521d4d7ce536dd16c424a11ae8837b65e6b7bd2d">
        <url href="http://www.apache.org/dist/lucene/solr/1.4.0/apache-solr-1.4.0.tgz"/>
    </resource>

    <build>
        <!-- Jar artifacts -->
        <move file="archive/apache-${name}-${version}/dist/apache-${name}-cell-${version}.jar" tofile="artifacts/jars/${name}-cell.jar"/>
        <move file="archive/apache-${name}-${version}/dist/apache-${name}-clustering-${version}.jar" tofile="artifacts/jars/${name}-clustering.jar"/>
        <move file="archive/apache-${name}-${version}/dist/apache-${name}-core-${version}.jar" tofile="artifacts/jars/${name}-core.jar"/>
        <move file="archive/apache-${name}-${version}/dist/apache-${name}-dataimporthandler-${version}.jar" tofile="artifacts/jars/${name}-dataimporthandler.jar"/>
        <move file="archive/apache-${name}-${version}/dist/apache-${name}-dataimporthandler-extras-${version}.jar" tofile="artifacts/jars/${name}-dataimporthandler-extras.jar"/>

        <!-- War artifacts -->
        <move file="archive/apache-${name}-${version}/dist/apache-${name}-${version}.war" tofile="artifacts/wars/${name}.war"/>
    </build>

</packager-module>

2) Опубликовать в подрывной деятельности

Я никогда не использовал его сам, но я думаю, вам нужно настроить преобразователь Subversion и использовать это для публикации ваших артефактов

3) Использование переменной ivy в файле упаковщика

В приведенном выше файле упаковщика используются две переменные ivy. Не уверен, что ваш вопрос.

Обновление: поддержка сторонних jar-файлов

Раздел публикаций файла ivy включает номер версии в имени стороннего jar-файла:

файл плюща

..
<publications>
    <artifact name="abc-1.0" conf="jars"/>
    <artifact name="pqr-2.0" conf="jars"/>
</publications>
..

файл упаковщика

..
<build>
    <move file="archive/apache-${name}-${version}/dist/abc-1.0.jar" tofile="artifacts/jars/abc-1.0.jar"/>
    <move file="archive/apache-${name}-${version}/dist/pqr-2.0.jar" tofile="artifacts/jars/pqr-2.0.jar"/>
</build>
..
person Mark O'Connor    schedule 20.05.2010