Грейл - как объявить зависимость банку в банке

StackOverflow https://stackoverflow.com/questions/3445696

  •  27-09-2019
  •  | 
  •  

Вопрос

Используя Грейл, я потребляю сборку из репозитория архива. Один из банок (javax.jms_1.1.0.200810061358.jar) имеет следующий контент:

about.html
about_files
LICENSE.txt
jms.jar
META-INF
MANIFEST.MF

Банка, которую мне нужно, на самом деле, JMS.jar внутри этого javax.jms_1.1.0.200810061358.jar

Единственный способ потреблять эту банку, потянув JMS.jar из репозитория javax.jms_1.1.0.200810081358.jar и сохранение его в файловой системе и потребляя его через:

repositories { flatDir: my_dir_with_jms.jar_in_it}

Кто-то в списке Гресл предложил использовать Resolver Packager плюща.

Я посмотрел на это связь И был оставлен очень запутанным. У меня есть другие резольверы из плюща, созданные так:

addIvyPattern 'http://archivaserver:8080/archiva/repository/osgi-internal/[organisation]/[module]/[revision]/ivy_[revision].xml'
   addArtifactPattern
"http://archivaserver:8080/archiva/repository/osgi-official/[organisation]/[organisation]/[module]_[revision](-[classifier]).[ext]"

Кто-нибудь знает о хорошем решении этого?

Это было полезно?

Решение

Разрешение зависимости внутри зависимости потребует использования плюща Packager Resolver.

Я никогда не настроил посылку Resolver из Грели, но я думаю, что это будет работать что-то вроде следующего (ссылка на ссылку страница в Интернете)

repositories {
    add(new org.apache.ivy.plugins.resolver.packager.PackagerResolver()) {
        name = 'local Ivy packagers'

        buildRoot = file("${gradle.gradleUserHomeDir}/packager/build")
        resourceCache = file("${gradle.gradleUserHomeDir}/packager/cache")

        addIvyPattern      "file:///${project.rootDir}/ivy/[organisation]/[module]/[revision]/ivy.xml"
        addArtifactPattern "file:///${project.rootDir}/ivy/[organisation]/[module]/[revision]/packager.xml"
    }
}

dependencies {
    compile group: 'org.myorg', name: 'jms', version: '1.1.0.200810061358'
}

Resolver требует следующих файлов для объявленной зависимости:

ivy/org.myorg/jms/1.1.0.200810061358/ivy.xml
ivy/org.myorg/jms/1.1.0.200810061358/packager.xml

Ivy.xml.

Описывает модуль и в этом случае объявляет, какие артефакты публикуются:

<ivy-module version="2.0">
    <info organisation="org.myorg" module="jms" revision="1.1.0.200810061358" status="release"/>

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

</ivy-module>

Packager.xml.

Описывает, где находится прикрепление архива и инструкции о том, как извлечь JMS.jar:

<packager-module version="1.0">

    <resource dest="archive" url="http://archivaserver:8080/archiva/repository/??/javax.jms_1.1.0.200810061358.jar" sha1="????"/>

    <build>
        <move file="archive/jms.jar" tofile="artifacts/jars/jms.jar"/>
    </build>

</packager-module>

Содержание под строить Тег используется для генерации сценария муравья. Для более подробной информации прочитайте раздел «Инструкции по упаковке» Документация плюща

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top