Traemos la mejor información que descubrimos online. Nosotros esperamos que te resulte de utilidad y si puedes compartir alguna mejora hazlo libremente.
Solución:
Si no puede dar acceso a su equipo extranjero, puede copiar todos los archivos de dependencias necesarios en un solo directorio y luego usar flatDir
repositorio.
repositories
flatDir
dirs 'D:/path/to/local/directory'
dependencies
compile name: 'name-of-jar'
Otra forma sin usar flatDir
repositorio es:
dependencies
compile files('/path/to/dir/something_local.jar')
En lugar de configurar flatDir
repositorio, puede declarar un local maven
repositorio de la siguiente manera:
repositories
maven
url 'file://D:/path/to/local/directory'
Como @Peter Niederwieser mencionado, flatDir
El repositorio no admite la resolución de dependencia transitiva. maven
el repositorio local lo hace.
Usar flatDir como a continuación es una opción:
repositories
flatDir
dirs 'D:/path/to/local/directory'
Esto funciona. Pero si hay mavenCentral() u otros repositorios maven que contienen el mismo JAR, se dará prioridad al repositorio maven sobre flatDir.
Extracto de la documentación de Gradle: https://docs.gradle.org/current/userguide/repository_types.html
Gradle generará dinámicamente un descriptor de módulo (sin ninguna información de dependencia) en función de la presencia de artefactos. Sin embargo, como Gradle prefiere usar módulos cuyo descriptor se haya creado a partir de metadatos reales en lugar de ser generados, los repositorios de directorios planos no se pueden usar para anular artefactos con metadatos reales de otros repositorios. Por ejemplo, si Gradle encuentra solo jmxri-1.2.1.jar en un repositorio de directorio plano, pero jmxri-1.2.1.pom en otro repositorio que admita metadatos, usará el segundo repositorio para proporcionar el módulo.
Entonces flatDir no es bueno. Deberíamos usar el repositorio maven local como se menciona en la segunda respuesta. Pero hay un par de problemas con la segunda respuesta.
- no portátil
- Si el artefacto también está presente en los repositorios globales, no está claro de dónde se seleccionará.
Podemos resolver estos problemas usando una solución como la siguiente:
- Cree una carpeta llamada libs en el directorio del proyecto
- Copie sus artefactos en este directorio libs (si está usando git o cualquier otro scm, asegúrese de distribuir este fodler de libs para que otros puedan simplemente
gradle build
sin ningún problema) - Declare un repositorio maven en su directorio libs y llame a mavenLocal() antes de enumerar cualquier otro repositorio. Este paso es muy importante para asegurarse de que el jar se seleccione de su directorio local en lugar de otros repositorios globales.
repositories
maven
url uri("$projectDir/libs")
mavenLocal()
mavenCentral()
De esta manera, puede estar seguro de que incluso si el JAR está presente en otros repositorios, solo se seleccionará de su directorio local y la solución también es portátil.
Reseñas y puntuaciones de la guía
Agradecemos que desees añadir valor a nuestra información colaborando tu experiencia en las acotaciones.