Así que intenté 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 en la carpeta Bibliotecas referenciadas 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 aparece el siguiente error:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Aquí está mi repositorio completo: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
java
gradle
dependency-management
build.gradle
gradle-eclipse
Wang-Zhao-Liu QM
fuente
fuente
Respuestas:
Si realmente necesita tomar ese .jar de un directorio local,
Agregue al lado de su módulo gradle (No el archivo gradle de la aplicación):
Sin embargo, al ser un .jar estándar en un repositorio real de Maven, ¿por qué no intentas esto?
fuente
gradle.build
archivo: ¿qué es este "archivo de aplicación gradle" y el "módulo gradle"?implementation(":gson:2.2.4")
Parece ser la forma de hacerlo.De acuerdo con la documentación , use una ruta relativa para una dependencia jar local de la siguiente manera:
fuente
También puede hacer esto que incluiría todos los JAR en el repositorio local. De esta manera, no tendría que especificarlo cada vez.
fuente
Lo siguiente funciona para mí:
Consulte la documentación de Gradle .
fuente
Puede intentar reutilizar su repositorio local de Maven para Gradle:
Instale el jar en su 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
~/.m2/
repositorio local de MavenHabilite su repositorio local de Maven en su
build.gradle
archivo:fuente
La respuesta aceptada es buena, sin embargo, habría necesitado varias configuraciones de biblioteca dentro de mi compilación de Gradle multiproyecto para usar la misma biblioteca Java de terceros.
Agregar ' $ rootProject.projectDir ' al elemento de ruta ' dir ' dentro de mi cierre ' allprojects ' significaba que cada subproyecto hacía referencia al mismo directorio ' libs ', y no a una versión local de ese subproyecto:
EDITAR por Quizzie: cambió "$ {rootProject.projectDir}" a "$ rootProject.projectDir" (funciona en la versión más reciente de Gradle).
fuente
Una solución para quienes usan Kotlin DSL
Las soluciones agregadas hasta ahora son excelentes para el OP, pero no se pueden usar con Kotlin DSL sin antes traducirlas. Aquí hay un ejemplo de cómo agregué un .JAR local a mi compilación usando Kotlin DSL:
Recuerde que si está utilizando Windows, sus barras invertidas tendrán que escapar:
Y también recuerde que las comillas deben ser comillas dobles, no comillas simples.
Editar para 2020:
Las actualizaciones de Gradle han quedado obsoletas
compile
y estántestCompile
a favor deimplementation
ytestImplementation
. Entonces, el bloque de dependencia anterior se vería así para las versiones actuales de Gradle:fuente
compile(project(":MyProject"))
donde "MyProject" se define en susettings.gradle
archivo con algo asíinclude("MyProject")
.Una manera simple de hacer esto es
compilará todos los archivos .jar en su directorio libs en la aplicación.
fuente
No pude obtener la sugerencia anterior en https://stackoverflow.com/a/20956456/1019307 para que funcione. Sin embargo, esto funcionó para mí. Para un archivo
secondstring-20030401.jar
que almacené en unlibs/
directorio en la raíz del proyecto:fuente
La pregunta ya ha sido respondida en detalle. Todavía quiero agregar algo que me parece muy sorprendente:
La tarea "dependencias de gradle" no enumera ninguna dependencia de archivo. Aunque pueda pensarlo, 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 sus archivos lib locales referenciados funcionan correctamente.
fuente
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 código siguiente en el bloque de dependencias en build.gradle:
fuente
La mejor manera de hacerlo es agregar esto en su archivo build.gradle y presionar la opción de sincronización
fuente
Puedes agregar jar haciendo:
Para gradle simplemente ponga el siguiente código en
build.gradle
:y para maven solo sigue los pasos:
Para Intellij: Archivo-> estructura del proyecto-> módulos-> pestaña de dependencia-> haga clic en + signo-> jar y dependencia-> seleccione los frascos que desea importar-> ok-> aplicar (si está visible) -> ok
Recuerde que si tiene alguna
java.lang.NoClassDefFoundError: Could not initialize class
excepción en el tiempo de ejecución, esto significa que las dependencias en jar no están instaladas, por lo que debe agregar todas las dependencias en el proyecto principal.fuente
Ir a archivo -> Estructura del proyecto -> Módulos -> aplicación -> Pestaña Dependencias -> Haga 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
fuente
build.gradle
.Tenga cuidado si está utilizando la integración continua, debe agregar sus bibliotecas en la misma ruta en su servidor de compilación.
Por esta razón, prefiero agregar jar al repositorio local y, por supuesto, hacer lo mismo en el servidor de compilación.
fuente
De otra manera:
Agregar biblioteca en la vista de árbol. Haga clic derecho sobre este. Seleccione el menú "Agregar como biblioteca". Aparece un cuadro de diálogo, le permite seleccionar el módulo. OK y ya está hecho.
fuente