2010-04-03 17 views
43

Actualmente, estoy probando Gradle como alternativa a Maven. En mis proyectos, hay algunos frascos de terceros, que no están disponibles en ningún repositorio (Maven). Mi problema ahora es cómo puedo administrarlo para instalar estos archivos jar en mi repositorio local de .gradle. (Si es posible, no quiero usar el repositorio local de Maven, porque Gradle debería ejecutarse de forma independiente.) En este momento, recibo muchas excepciones debido a que faltan frascos. En Maven, es bastante simple ejecutando el comando de instalación. Sin embargo, mi búsqueda en Google de algo similar al comando de instalación de Maven no fue exitosa. ¿Alguien tiene una idea?Gradle: Poner un jar de terceros disponible para el repositorio local de gradle

Respuesta

3

Tal vez me falta algo de mi lectura de su pregunta, suponiendo que su cesión temporal Gradle es del tipo flatDir, usted debería ser capaz de copiar los archivos que hay en la forma myjar-1.0.jar y resolverlos como myjar de versión 1.0.

No estoy seguro de por qué debería ser necesario que Gradle ejecute maven para acceder a un repositorio maven local. Puede definir los repositorios maven y resolver las dependencias. Puede usar gradle upload para enviar los repositorios maven locales o remotos si es necesario. En ese caso, ejecutará maven.

1

Creo que algo como esto debería funcionar:

dependencies { 
    files('yourfile.jar') 
} 

¿Funciona para usted?

+0

bien, lo siento por la pregunta ingenua, pero si pongo archivos ('C: /Temp/myFile.jar'), ¿funcionará o tendré que añadir una variable de entorno adicional? – Gabriel

38

puede incluir su archivo JAR dependencias del sistema como:

dependencies { 
    runtime files('libs/a.jar', 'libs/b.jar') 
    runtime fileTree(dir: 'libs', include: '*.jar') 
} 

puede cambiar en tiempo de ejecución para la compilación/testCompile/etc ..

+0

¿Qué ocurre si un proyecto de terceros tiene sus propias dependencias con otras librerías? – dnim

+0

Es fileTree funciona para todos los subdirectorios en la carpeta libs. Ejemplo de algunos jarros dentro de libs/sping/spring.jar, en este caso, ¿incluye el resorte .jar también? – mallikgm

3

En resumen: a desplegar gestor de repositorio. Puede local, en la LAN de la compañía.

Una forma completamente diferente de pensar acerca de este tipo de problema, especialmente si ocurre a menudo, es usar un administrador de repositorio. Existen algunas excelentes opciones de código abierto como Artifactory, Nexus o Archiva.

Supongamos que tiene un archivo jar de origen dudoso que debe incluirse en su compilación hasta que tenga la oportunidad de refactorizarlo. Un administrador de repositorio le permitiría subir el archivo a su propio repositorio como, por el bien de este ejemplo, dudoso origen-UNKNOWN.jar

Luego, su build.gradle sería algo como esto:

repositories { 
    mavenRepo urls: "http://your.own.repository/url"; 
} 

dependencies { 
    compile "dubious:origin:UNKNOWN"; 
} 

Existen muchas otras ventajas en el uso de un administrador de repositorio, como el almacenamiento en memoria caché de artefactos remotos, eliminar artefactos de scm, versiones intermedias, permisos de usuario más granulares, etc.

En el lado negativo, estaría agregando un servidor que lleva algunos gastos generales de mantenimiento para mantener sus compilaciones en ejecución.

Depende del tamaño de su proyecto, supongo.

10

Una respuesta más amplia fue dado en una lista de correo por Adam Murdoch en http://gradle.1045684.n5.nabble.com/Gradle-Make-a-3rd-party-jar-available-to-local-gradle-repository-td1431953.html

En abril de 2010 no había manera sencilla de agregar un nuevo jarfile a su repositorio ~/.gradle. Actualmente investigando si esto ha cambiado.

A partir de octubre de 2014, este sigue siendo el caso - porque Gradle hace una suma de control MD5 de su jarfile, no se puede simplemente descargarlo y ponerlo en un directorio bajo .gradle/cachés, y no lo hace Gradle , por lo que puedo ver, tiene tareas que le permiten tomar un archivo local y enviar ese archivo a su caché.

7

Opción usada (1) de la publicación de Adam Murdoch (ya enlazada arriba: http://gradle.1045684.n5.nabble.com/Gradle-Make-a-3rd-party-jar-available-to-local-gradle-repository-td1431953.html) con gradle-1.3 y funciona muy bien!

Aquí su comentario:

  1. Copiar los frascos a un directorio local y utilizar un repositorio flatDir() para utilizarlos fuera de allí. Por ejemplo, es posible copiarlos en $ projectdir/lib y en su fichero de construcción hacer:

repositorios { flatDir (dirs: 'lib')}

Los archivos en el directorio lib debe seguir el esquema de nombres: nombre-versión-clasificador.extensión, donde la versión y el clasificador son opcionales. Así, por ejemplo, puede llamarlos groovy-1.7.0.jar o incluso groovy.jar

Entonces, simplemente declarar las dependencias de forma normal:

dependencias { compilan 'maravilloso: maravilloso: 1.7. 0' }

Hay un poco más de detalle uno flatDir repositorio() en: http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#sec:flat_dir_resolver

  1. similar a la anterior, pero utilizando una resolución de la hiedra en lugar de flatDir(). Esto es más o menos lo mismo que el anterior, pero permite un muchas más opciones en cuanto a nombres y ubicaciones.

Hay algo de detalle en: http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#sub:more_about_ivy_resolvers

  1. no se moleste con la declaración de las dependencias. Simplemente copie los archivos jar en un directorio local en algún lugar y agregue una dependencia de archivos. Por ejemplo, si los frascos están en $ projectdir/lib:

dependencias { compilar FileTree ('lib') // esto incluye todos los archivos bajo 'lib' en la ruta de clase de compilación}

más detalles en: http://gradle.org/0.9-preview-1/docs/userguide/dependency_management.html#N12EAD

  1. uso experto de instalación para instalar las dependencias en su caché local de Maven, y el uso de la caché experto como un repositorio:

repositorios { mavenRepo (URL: nuevo archivo. (System.properties [ 'user.home'], '.m2/repositorio') Touri() toURL().)}

Cuestiones relacionadas