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?
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 dependenciaB
, al tiempo que mantienes sus dependencias transitivas en tu classpath. Aquí tienes un ejemplo de cómo puedes lograr esto:En el ejemplo anterior, primero excluimos
B
de la dependenciaA
usando el métodoexclude
. Luego, agregamos nuevamente la dependenciaB
utilizando el métodointransitive
, que indica a sbt que solo lea el POM deB
y omita la descarga de su archivo JAR. De esta manera, puedes mantener todas las dependencias transitivas deB
en tu classpath, pero excluir el archivo JAR deB
en sí mismo.