java - dependency - ¿Cómo agregar la dependencia del archivo.jar local al archivo build.gradle?
maven repository (14)
Así que he intentado agregar mi dependencia del 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 de referencia de bibliotecas 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 comandos, aparece el siguiente error:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Aquí está mi repo completo: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
De acuerdo con la documentación , use una ruta relativa para una dependencia de jar local de la siguiente manera:
dependencies {
compile files(''libs/something_local.jar'')
}
De otra manera:
Añadir 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 permitirá seleccionar el módulo. OK y ya está hecho.
Ir a archivo -> Estructura del proyecto -> Módulos -> aplicación -> Pestaña Dependencias -> Haga clic en + (botón) -> Seleccionar dependencia de archivo -> Seleccione el archivo jar en la carpeta lib
Estos pasos agregarán automáticamente su dependencia a gralde.
Muy simple
La mejor manera de hacerlo es agregar esto a su archivo build.gradle y seleccionar 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 de Gradle" no muestra ninguna dependencia de archivos. Aunque podría pensar que sí, 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 a los que se hace referencia funcionan correctamente.
La respuesta aceptada es buena, sin embargo, habría necesitado varias configuraciones de biblioteca dentro de mi compilación Gradle de proyectos múltiples para usar la misma biblioteca de Java de terceros.
Agregar '' $ rootProject.projectDir '' al elemento de ruta '' dir '' dentro del cierre de '' allprojects '' significaba que cada subproyecto hacía referencia al mismo directorio '' libs '', y no una versión local de ese subproyecto:
//gradle.build snippet
allprojects {
...
repositories {
//All sub-projects will now refer to the same ''libs'' directory
flatDir {
dirs "$rootProject.projectDir/libs"
}
mavenCentral()
}
...
}
EDITADO por Quizzie: se cambió "$ {rootProject.projectDir}" por "$ rootProject.projectDir" (funciona en la versión más reciente de Gradle).
La solución que funcionó para mí es el uso de fileTree en el archivo build.gradle. Mantenga el .jar que necesita agregar como dependencia en la carpeta libs. El dar el siguiente código en el bloque de dependencias en build.gradle:
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
}
Los siguientes trabajos para mí:
compile fileTree(dir: ''libs'', include: ''*.jar'')
Consulte la documentación de Gradle .
No pude hacer funcionar la sugerencia anterior en https://.com/a/20956456/1019307 . 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''
Puede intentar reutilizar su repositorio local de Maven para Gradle:
Instala el jar en tu repositorio 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 repositorio
~/.m2/
local de MavenHabilite su repositorio local de Maven en su archivo
build.gradle
:repositories { mavenCentral() mavenLocal() } dependencies { compile ("com.company:utility:0.0.1") }
- Ahora deberías tener el jar habilitado para compilar en tu proyecto.
Si realmente necesitas tomar ese .jar de un directorio local,
Agregue al lado de su módulo gradle (no el archivo gradle de la aplicación):
repositories {
flatDir {
dirs ''libs''
}
}
dependencies {
compile name: ''gson-2.2.4''
}
Sin embargo, al ser un archivo .jar estándar en un repositorio real de maven, ¿por qué no lo intentas?
repositories {
mavenCentral()
}
dependencies {
compile ''com.google.code.gson:gson:2.2.4''
}
También puede hacer esto, que incluiría todos los archivos JAR en el repositorio local. De esta manera no tendrías que especificarlo cada vez.
dependencies {
compile fileTree(dir: ''libs'', include: [''*.jar''])
}
Tenga cuidado si está utilizando integración continua, debe agregar sus bibliotecas en la misma ruta en su servidor de compilación.
Por este motivo, prefiero agregar jar al repositorio local y, por supuesto, hacer lo mismo en el servidor de compilación.
Una forma sencilla de hacer esto es
compile fileTree(include: [''*.jar''], dir: ''libs'')
compilará todos los archivos .jar en el directorio libs en la aplicación.