有人可以解释我写这两行之间的区别:
resolvers in ThisBuild ++= appResolvers
resolvers in Global ++= appResolvers
Run Code Online (Sandbox Code Playgroud)
Eug*_*ota 25
阅读范围以获得完整说明.
我会引用相关部分:
有三个范围轴:
- 项目
- 配置
- 任务
按项目轴确定范围
如果将多个项目放在一个构建中,则每个项目都需要自己的设置.也就是说,键可以根据项目确定范围.
全球范围
可以使用轴类型的实例填充每个示波器轴(例如,可以使用任务填充任务轴),或者可以使用特殊值Global填充轴.
在运行sbt时引用范围键
*可以针对每个轴显示,参考Global范围.
{.}/test:full-classpath将项目轴设置为构建所在的"整个构建"{.}.{.}可以用ThisBuildScala代码编写.引用构建定义中的范围
Run Code Online (Sandbox Code Playgroud)name in Global := "hello"(
name in Global隐式地将范围轴转换为Global所有轴都设置为的范围Global;任务和配置已经Global默认,因此这里的效果是制作项目Global,即定义*/*:name而不是{file:/home/hp/checkout/hello/}default-aea33a/*:name)
如上所述,Global将所有三个轴都设置为,Global而ThisBuild仅将项目轴设置为{.}.如果您ThisBuild与其他轴配置相结合,这可能有意义:
name> set name in Test in ThisBuild := "test-name"
[info] Defining {.}/test:name
Run Code Online (Sandbox Code Playgroud)
这可能会在插件中使用:
resolvers in Global ++= appResolvers
Run Code Online (Sandbox Code Playgroud)
虽然这可能出现在您的构建定义中:
resolvers in ThisBuild ++= appResolvers
Run Code Online (Sandbox Code Playgroud)
从而允许您覆盖插件提供的全局默认值.
在同一个构建定义中,使用任何一个很可能具有相同的效果,因为它们是委托列表中的底部两个.