Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 从ModuleID获取SBT设置_Scala_Sbt - Fatal编程技术网

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
文件中A
dependsOn
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时得到一个
非法动态引用:…
,这意味着。。。我可以访问这些项目。非常感谢。