Scala 从ModuleID获取SBT设置
如何为“同级”项目使用Scala 从ModuleID获取SBT设置,scala,sbt,Scala,Sbt,如何为“同级”项目使用moduleID:moduleID来访问设置键 我正在为多模块构建编写一个SBT插件 我有项目A(依赖于项目B)和项目B。 这两个项目都有我自己的generate和mybuild任务作为设置键。 mybuild任务使用generate中的值-这工作正常。 B不依赖于任何东西,因此B的mybuild只需要B:generate的键,一切正常。 我希望A的mybuild根据build.sbt文件中AdependsOnB这一事实,同时使用A:generate和B:generate。
moduleID:moduleID
来访问设置键
我正在为多模块构建编写一个SBT插件
我有项目A(依赖于项目B)和项目B。
这两个项目都有我自己的generate
和mybuild
任务作为设置键。
mybuild
任务使用generate
中的值-这工作正常。
B不依赖于任何东西,因此B的mybuild
只需要B:generate
的键,一切正常。
我希望A的mybuild
根据build.sbt
文件中AdependsOn
B这一事实,同时使用A:generate
和B:generate
。
我找到的唯一有希望的键以:ModuleID
实例的形式返回项目,那么是否有办法从ModuleID
获取设置键列表
。。。还是我应该用另一种方式
解决方案(种类)
这是什么
。。。这类作品。
它会导致一个错误,这意味着我访问了正确的对象,即使SBT宏不喜欢它。我认为您提到的模块ID与依赖关系管理有关,而不是子项目。 对于获取子项目设置/任务键,可以使用项目范围:
(generate in A).value
(generate in B).value
更全面的例子:
name := "A"
version := "1.0"
scalaVersion := "2.12.5"
val generate = TaskKey[String]("generate")
val myBuild = TaskKey[String]("myBuild")
val a = (project in file(".")).settings(Seq(
generate := "A_generate"
))
val b = (project in file("proj_b")).settings(Seq(
generate := "B_generate",
myBuild := (generate in a).value + "_" + generate.value
)).dependsOn(a)
Sbt控制台输出:
sbt:A> show b/myBuild
[info] A_generate_B_generate
我认为您提到的模块ID与依赖关系管理有关,而不是子项目。 对于获取子项目设置/任务键,可以使用项目范围:
(generate in A).value
(generate in B).value
更全面的例子:
name := "A"
version := "1.0"
scalaVersion := "2.12.5"
val generate = TaskKey[String]("generate")
val myBuild = TaskKey[String]("myBuild")
val a = (project in file(".")).settings(Seq(
generate := "A_generate"
))
val b = (project in file("proj_b")).settings(Seq(
generate := "B_generate",
myBuild := (generate in a).value + "_" + generate.value
)).dependsOn(a)
Sbt控制台输出:
sbt:A> show b/myBuild
[info] A_generate_B_generate
是 啊几乎。我不是在
.sbt
文件中工作,我正在尝试编写一个自动插件,它不需要任何特殊的me-too语法。是否有某种方法(在自动插件中)可以查询已附加了dependsOn()
的项目?这应该可以在任何位置执行:loadedBuild.value.allProjectRefs.find(u.\u 1.project==projectID.value.name)。get.\u 2.dependencies
Yes。。。我现在在尝试访问(project/config/taskKey).value时得到一个非法动态引用:…
,这意味着。。。我可以访问这些项目。谢谢你是的。。。几乎。我不是在.sbt
文件中工作,我正在尝试编写一个自动插件,它不需要任何特殊的me-too语法。是否有某种方法(在自动插件中)可以查询已附加了dependsOn()
的项目?这应该可以在任何位置执行:loadedBuild.value.allProjectRefs.find(u.\u 1.project==projectID.value.name)。get.\u 2.dependencies
Yes。。。我现在在尝试访问(project/config/taskKey).value时得到一个非法动态引用:…
,这意味着。。。我可以访问这些项目。非常感谢。