sbt - municipal - ley organica de la administracion publica vigente
¿Cuál es la diferencia entre los ámbitos ThisBuild y Global? (2)
Esto probablemente se usaría en un complemento:
resolvers in Global ++= appResolvers
Mientras que esto podría aparecer en tu definición de compilación:
resolvers in ThisBuild ++= appResolvers
por lo que le permite anular el valor predeterminado global ofrecido por el complemento.
Dentro de la misma definición de compilación, el uso de cualquiera de las dos probablemente tendrá un efecto equivalente, porque son los dos últimos en la lista de delegados.
¿Alguien puede explicarme la diferencia entre escribir estas 2 líneas?
resolvers in ThisBuild ++= appResolvers
resolvers in Global ++= appResolvers
Lea Scopes para obtener la explicación completa.
Citaré partes relevantes:
Hay tres ejes de alcance:
- Proyectos
- Configuraciones
- Tareas
Alcance por eje del proyecto
Si coloca varios proyectos en una sola construcción, cada proyecto necesita su propia configuración. Es decir, las claves pueden ser objeto de acuerdo con el proyecto.
Alcance global
Cada eje de alcance se puede completar con una instancia del tipo de eje (por ejemplo, el eje de tarea se puede completar con una tarea), o el eje se puede completar con el valor especial Global.
Refiriéndose a las teclas de ámbito cuando se ejecuta sbt
*
Puede aparecer para cada eje, refiriéndose al ámbitoGlobal
.
{.}/test:full-classpath
establece el eje del proyecto en "compilación completa" donde la compilación es{.}
.{.}
se puede escribirThisBuild
en código Scala.En referencia a los ámbitos en una definición de compilación
name in Global := "hello"
(
name in Global
convierte implícitamente el eje del alcanceGlobal
en un alcance con todos los ejes configurados enGlobal
; la tarea y la configuración ya sonGlobal
por defecto, por lo que aquí el efecto es hacer que el proyecto seaGlobal
, es decir, definir*/*:name
en lugar de{file:/home/hp/checkout/hello/}default-aea33a/*:name
)
Así como está escrito anteriormente, Global
establece los tres ejes en Global
mientras que ThisBuild
establece solo el eje del proyecto en {.}
. Esto podría tener sentido si combina ThisBuild
con otra configuración similar a un eje:
name> set name in Test in ThisBuild := "test-name"
[info] Defining {.}/test:name