Saltar al contenido

Cómo hacer que el repositorio de Gradle apunte al directorio local

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.

  1. no portátil
  2. 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:

  1. Cree una carpeta llamada libs en el directorio del proyecto
  2. 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)
  3. 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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *