¿Cómo agregar la dependencia del archivo .jar local al archivo build.gradle?

Así que he intentado agregar mi dependencia de archivo .jar local a mi archivo build.gradle:

apply plugin: 'java' sourceSets { main { java { srcDir 'src/model' } } } dependencies { runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar') runtime fileTree(dir: 'libs', include: '*.jar') } 

Y puede ver que agregué los archivos .jar a la carpeta Bibliotecas de referencia aquí: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries

Pero el problema es que cuando ejecuto el comando: gradle build en la línea de comando obtengo el siguiente error:

 error: package com.google.gson does not exist import com.google.gson.Gson; 

Aquí está mi repository completo: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1

Si realmente necesita tomar ese .jar de un directorio local,

Añádelo junto a su gradle de módulo (no el archivo gradle de la aplicación):

 repositories { flatDir { dirs 'libs' } } dependencies { compile name: 'gson-2.2.4' } 

Sin embargo, al ser un .jar estándar en un repository real de maven, ¿por qué no pruebas esto?

 repositories { mavenCentral() } dependencies { compile 'com.google.code.gson:gson:2.2.4' } 

De acuerdo con la documentación , use una ruta relativa para una dependencia jar local de la siguiente manera:

 dependencies { compile files('libs/something_local.jar') } 

También podría hacer esto, que incluiría todos los JAR en el repository local. De esta forma no tendrías que especificarlo cada vez.

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } 

Lo siguiente funciona para mí:

 compile fileTree(dir: 'libs', include: '*.jar') 

Consulte la documentación de Gradle .

La respuesta aceptada es buena, sin embargo, habría necesitado varias configuraciones de biblioteca dentro de mi comstackción de proyectos múltiples de Gradle para usar la misma biblioteca de Java de terceros.

Al agregar ‘ $ rootProject.projectDir ‘ al elemento de ruta ‘ dir ‘ dentro de mi cierre ‘ allprojects ‘, cada subproyecto hizo referencia al mismo directorio ‘ libs ‘, y no a una versión local para ese subproyecto:

 //gradle.build snippet allprojects { ... repositories { //All sub-projects will now refer to the same 'libs' directory flatDir { dirs "$rootProject.projectDir/libs" } mavenCentral() } ... } 

EDIT por Quizzie: cambió “$ {rootProject.projectDir}” a “$ rootProject.projectDir” (funciona en la versión más nueva de Gradle).

Puede intentar reutilizar su repository local de Maven para Gradle:

  • Instala el jar en tu repository local de Maven:

    mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar

  • Comprueba que tienes el jar instalado en tu ~/.m2/ local Maven repository

  • Habilite su repository Maven local en su archivo build.gradle :

     repositories { mavenCentral() mavenLocal() } dependencies { compile ("com.company:utility:0.0.1") } 
    • Ahora debería tener el jar habilitado para comstackción en su proyecto

Una forma simple de hacer esto es

 compile fileTree(include: ['*.jar'], dir: 'libs') 

comstackrá todos los archivos .jar en su directorio libs en la aplicación.

No pude obtener la sugerencia anterior en https://stackoverflow.com/a/20956456/1019307 para trabajar. Esto funcionó para mí sin embargo. Para un archivo secondstring-20030401.jar que secondstring-20030401.jar en un directorio libs/ en la raíz del proyecto:

 repositories { mavenCentral() // Not everything is available in a Maven/Gradle repository. Use a local 'libs/' directory for these. flatDir { dirs 'libs' } } ... compile name: 'secondstring-20030401' 

La mejor manera de hacerlo es agregar esto en su archivo build.gradle y presionar la opción de sincronización

 dependency{ compile files('path.jar') } 

La pregunta ya ha sido respondida en detalle. Todavía quiero agregar algo que me parece muy sorprendente:

La tarea “dependencias gradle” no enumera ninguna dependencia de archivos. Aunque así lo pienses, ya que se han especificado en el bloque “dependencias” después de todo …

Por lo tanto, no confíe en el resultado de esto para verificar si los archivos lib locales referenciados están funcionando correctamente.

La solución que funcionó para mí es el uso de fileTree en el archivo build.gradle. Mantenga el .jar que debe agregar como dependencia en la carpeta libs. Da el siguiente código en el bloque de dependencias en build.gradle:

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } 

Ir a archivo -> Estructura de proyecto -> Módulos -> aplicación -> Pestaña Dependencias -> Hacer clic en + (botón) -> Seleccionar dependencia de archivo -> Seleccionar archivo jar en la carpeta lib

Estos pasos agregarán automáticamente su dependencia a Gralde

Muy simple

De otra manera:

Agregar biblioteca en la vista de árbol. Haga clic derecho en este. Seleccione el menú “Agregar como biblioteca”. Aparecerá un cuadro de diálogo que le permite seleccionar el módulo. OK y listo.

Tenga cuidado si usa integración continua, debe agregar sus bibliotecas en la misma ruta en su servidor de comstackción.

Por esta razón, prefiero agregar jar al repository local y, por supuesto, hacer lo mismo en el servidor de comstackción.