es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo excluir una única dependencia en el build.sbt?

Digamos que tengo las siguientes dependencias:

+-A:1.0
  +-B:1.0
    +-C:1.0

Quiero excluir la dependencia B y solo B. Quiero mantener todas sus dependencias transitivas para que en mi classpath tenga tanto A.jar como C.jar pero no B.jar.
¿Hay alguna manera fácil de hacerlo en sbt? Por ejemplo, si hago lo siguiente:

libraryDependencies += "com.example" % "A" % "1.0" exclude("com.example", "B")

No intentará ni resolver C.


En otras palabras, ¿cómo puedo leer solo el POM de B, omitir la descarga del archivo jar y proceder normalmente con las otras dependencias?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma fácil de hacerlo en sbt. Puedes usar el método intransitive para excluir únicamente el archivo JAR de la dependencia B, al tiempo que mantienes sus dependencias transitivas en tu classpath. Aquí tienes un ejemplo de cómo puedes lograr esto:

    libraryDependencies += "com.example" % "A" % "1.0" exclude("com.example", "B") 
    libraryDependencies += "com.example" % "B" % "1.0" intransitive()
    

    En el ejemplo anterior, primero excluimos B de la dependencia A usando el método exclude. Luego, agregamos nuevamente la dependencia B utilizando el método intransitive, que indica a sbt que solo lea el POM de B y omita la descarga de su archivo JAR. De esta manera, puedes mantener todas las dependencias transitivas de B en tu classpath, pero excluir el archivo JAR de B en sí mismo.

Comments are closed.