我正在尝试设置这样的多项目构建:
+-- common
| +-- build.sbt
+-- api
| +-- build.sbt
+-- indexer
| +-- build.sbt
+-- build.sbt
root中的 build.sbt
看起来像这样:
lazy val common = (project in file("common"))
lazy val searchApi = (project in file("search"))
.dependsOn(common)
lazy val indexer = (project in file("indexer"))
.dependsOn(common)
如您所见,indexer
和api
都依赖于common
但不依赖于compile
。问题是如果我尝试为任务执行触发执行,比如sbt ~api/compile
:
indexer
然后更改watchSources
项目中的文件,即使更改的文件实际上不在其类路径上,项目仍将重新编译 - 似乎build.sbt
始终由引用的每个项目组成根watchSources
并且不考虑您实际运行任务的项目。
我尝试过滤build.sbt
,但很难做得很整齐,因为我放入的watchSources
文件只能看到它所在项目的资源......例如indexer/build.sbt
中的indexer
只能看到build.sbt
中的观看来源,根目录中的src/main/resources
仅在根目录中观看watchSources
(它看不到子项目的build.sbt
。
有没有人有一个很好的解决方法。我得到的最好的是在每个子项目的watchSources <<= (watchSources) map { files =>
if (Option(System.getProperty("project")).getOrElse("none").equals("indexer")) {
files
} else {
Nil
}
}
...
sbt -Dproject=indexer ~indexer/compile
...然后运行library(raster)
library(SpaDES)
m = matrix(c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0.1, 0.2, 0.3, 0.4, 0.4, 0.3, 0.2, 0.1, 0,
0, 1, 0, 1, 0, 1, 0, 1, 0, 1,
0.4, 0.3, 0.2, 0.1, 0, 0.1, 0.2, 0.3, 0.4, 0.5),nrow=4,
ncol=10, byrow=TRUE )
r <- raster(m)
#the aspect ratio should be modified to "0.4".
plot(r,asp=0.4,col = grey.colors(10, start=0, end=1))
#Because it is the relation beetween columns and rows.
。
答案 0 :(得分:1)
~
运算符监视当前活动的项目以进行更改。首先尝试运行project api
:
> project api
> ~compile