Pregunta

El uso de Gradle, estoy consumiendo una construcción de un repositorio archiva. Uno de los frascos (javax.jms_1.1.0.200810061358.jar) tiene el siguiente contenido:

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

La necesidad frasco que es en realidad el jms.jar dentro de este javax.jms_1.1.0.200810061358.jar

La única manera que he sido capaz de consumir este frasco está tirando jms.jar de javax.jms_1.1.0.200810081358.jar del repositorio y guardarlo al sistema de archivos y consumirlo a través de:

repositories { flatDir: my_dir_with_jms.jar_in_it}

alguien en la lista Gradle sugirió utilizar una resolución de empaquetador Ivy.

Me veía en este enlace y era dejó muy confundido. Tengo otros resolución de hiedra creados de esta manera:

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]"

Alguien sabe de una buena solución para esto?

¿Fue útil?

Solución

La resolución de una dependencia dentro de una dependencia requeriría el uso de la hiedra empaquetador de resolución .

nunca he configurado el sistema de resolución paquete desde dentro Gradle, pero creo que funcionaría algo como lo siguiente (Hacer referencia página web )

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'
}

El sistema de resolución requiere los siguientes archivos de la dependencia declarada:

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

ivy.xml

Describe el módulo y en este caso lo que se publican declara artefactos:

<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

describe el lugar donde se encuentra y las instrucciones sobre cómo extraer el archivo jms.jar adjuntando:

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

El contenido bajo la acumulación se utiliza para generar una secuencia de comandos ANT. Para más detalles, lea la sección "Empaquetado de instrucciones" de la hiedra documentación

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top