Как создать зависимость Ivy для локальных jar-файлов внутри вашего проекта / lib? - PullRequest
8 голосов
/ 05 февраля 2010

У меня есть пара файлов jar (некоторые из которых зависят друг от друга), и я пытаюсь, чтобы ivy управлял ими для моего проекта.

Я не хочу создавать «локальный» (user dir based) репозиторий, потому что я хочу, чтобы другие пользователи могли проверить мой проект svn и запустить его без настройки локального / общего репозитория. По разным причинам я не могу добавить эти файлы в реальный репозиторий, который мы используем.

Проект зависит от этих файлов, и я использую их в SVN. В прошлом у меня были свои обычные xml-файлы зависимости от плюща. Эти файлы используют XML-файл настроек, указывающий на удаленный репозиторий. Раньше, в последнюю минуту, я использовал задачу сборки для копирования этих файлов из папки lib во встроенную папку. Это похоже на недопустимое злоупотребление, которое игнорирует функции распознавателя файловой системы ivy.

(ivy.xml и build.xml для 3-х сборочных проектов используют тот же ivysettings.xml в другом базовом каталоге.)

Мне кажется, что я нахожусь на 90% пути, на что я должен указать свой распознаватель файловой системы в ivysettings.xml, чтобы сделать свое первое разрешение в цепочке преобразователей для проверки файлов jar в projectdir / lib?

1 Ответ

3 голосов
/ 07 февраля 2010

Вы смотрели на задачу плюща buildlist ?

Вы можете использовать это, чтобы контролировать порядок, в котором собраны ваши 3 модуля. Поскольку каждый модуль собран, он может публиковать данные в локальном репозитории, гарантируя, что jar присутствует во времени для следующего модуля в цепочке.

   build.xml
   ivysettings.xml
   --> module1 --> build.xml
                   ivy.xml
   --> module2 --> build.xml
                   ivy.xml
   --> module3 --> build.xml
                   ivy.xml

Ваш файл настроек может быть доступен всем проектам. В нем говорится, что созданные вами модули доступны локально, все остальное - из репозитория по умолчанию, доступного для всех пользователей вашего проекта (в данном случае Maven)

<ivysettings>
        <settings defaultResolver="maven2"/>
        <resolvers>
                <ibiblio name="maven2" m2compatible="true"/>

                <filesystem name="local">
                    <ivy pattern="${local.rep.dir}/.."/>
                    <artifact pattern="${local.rep.dir}/.."/>
                </filesystem>
        </resolvers>
        <modules>
                <module organisation="org.me" name="module1" resolver="local"/>
                <module organisation="org.me" name="module2" resolver="local"/>
                ..
        </modules>
</ivysettings>

Наконец, когда вы публикуете внешне, вы можете использовать задачу ivy install , чтобы скопировать модули, которые вы уже опубликовали локально, в окончательное местоположение репозитория

...