зависимость плюща от внешнего JAR - PullRequest
1 голос
/ 07 июня 2010

Я сражаюсь с Айви (я пробовал maven, но у меня было более трудное событие при настройке хранилища JBoss для Hibernate).

Быстрый вопрос - я использую этот замечательный пакет: http://ooweb.sourceforge.net/index.html

К сожалению, JAR доступен только через Sourceforge: http://sourceforge.net/projects/ooweb/files/ooweb/0.8.0/ooweb-0.8.0-bin.tar.gz/download

Есть ли способ заставить Айви загрузить определенный JAR?

Впрочем, возможно ли это сделать с Maven?

Или, если уж на то пошло, как насчет Грэдла?

Спасибо! Миша

Ответы [ 2 ]

2 голосов
/ 07 июня 2010

Посмотрим, правильно ли я вас понял ..

Я не могу говорить за Айви, но с Maven вам иногда придется вручную устанавливать JAR-файлы в репозиторий, например локальный и, возможно, тот, который использовался при сборке программного обеспечения.

Загрузите флягу на свой диск и сделайте что-то подобное в командной строке:

mvn install:install-file -Dfile=ooweb.jar -DgroupId=ooweb -DartifactId=ooweb -Dversion=0.8.0 -Dpackaging=jar 

Выберите более сложный groupId, который вам нужен, это то, что вы будете использовать в pom при определении зависимости.

Была ли какая-то конкретная проблема, с которой вы столкнулись при настройке репозитория JBoss? Я сделал это некоторое время назад, просто добавив это в конце пом:

<repositories>
 <repository>
  <id>jboss</id>
  <url>http://repository.jboss.com/maven2</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>false</enabled>
  </snapshots>
</repository>
<repository>
  <id>jboss-snapshot</id>
  <url>http://snapshots.jboss.org/maven2</url>
  <releases>
    <enabled>true</enabled>
  </releases>
  <snapshots>
    <enabled>true</enabled>
  </snapshots>
</repository>

1 голос
/ 18 сентября 2011

Вы можете использовать распознаватель пакетов ivy , чтобы превратить любой загружаемый пакет в модуль ivy.

См. Также сводку плюща хранилище

Мой пример проекта состоит из следующих файлов:

$ find . -type f
./build.xml
./ivy.xml
./ivysettings.xml
./repository/net.sourceforge/ooweb/0.8.0/packager.xml

ivy.xml

Обычный файл плюща, объявляющий зависимость от модуля ooweb:

<ivy-module version="2.0">
    <info organisation="com.myspotontheweb" module="packager_demo"/>
    <dependencies>
        <dependency org="net.sourceforge" name="ooweb" rev="0.8.0"/>
    </dependencies>
</ivy-module>

ivysettings.xml

Центральный репозиторий Maven настроен как репозиторий по умолчанию. Специальный распознаватель «упаковщик» используется для извлечения модуля ooweb .

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

<ivysettings>
    <settings defaultResolver="central"/>
        <resolvers>
           <ibiblio name="central" m2compatible="true"/>
            <packager name="packager" buildRoot="${user.home}/.ivy2/packager/build" resourceCache="${user.home}/.ivy2/packager/cache" preserveBuildDirectories="false">
                <ivy pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/ivy.xml"/>
                <artifact pattern="file:///${ivy.settings.dir}/repository/[organisation]/[module]/[revision]/packager.xml"/>
            </packager>
        </resolvers>
        <modules>
            <module organisation="net.sourceforge" name="ooweb" resolver="packager"/>
        </modules>
</ivysettings>

packager.xml

Вот магия. В объявлении resource указано расположение пакета tar. Раздел сборки содержит инструкции ANT о том, какие файлы перемещать в раздел артефактов модуля.

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

    <resource dest="archive" url="http://sourceforge.net/projects/ooweb/files/ooweb/0.8.0/ooweb-0.8.0-bin.tar.gz/download" sha1="d886a3d48bf4380cbec3e6f7de029f01e5c55315" type="tar.gz"/>

    <build>
        <move file="archive/${packagename}/lib/${packagename}.jar" tofile="artifacts/jars/${name}.jar"/>
    </build>
</packager-module>

Примечание: Под капотом ivy использует таблицу стилей XSLT для создания сценария ANT из объявления упаковщика. Этот скрипт ANT затем загрузит артефакт и поместит его в кеш плюща.

Обновление

Gradle встраивает плющ, поэтому это решение для упаковщика должно работать для двух технологий сборки. Смотрите этот ответ .

...