Проблемы с использованием плюща - PullRequest
0 голосов
/ 20 мая 2010

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

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

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

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

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

1 Ответ

2 голосов
/ 21 мая 2010

1) распознаватель пакетов

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

Вот мой пример, который загружает файлы, связанные с дистрибутивом 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 указывает артефакты, которые являются частью пакета в разделе публикаций .

упаковщик / org.apache.solr / Solr / плющом 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 .

упаковщик / org.apache.solr / Solr / упаковщик-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. Не уверен, что ваш вопрос.

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

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

файл плюща

..
<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>
..
...