我在sbt中有一个commons
项目需要存储在Dependencies.scala
中的一些值。
.
├── build.sbt
├── project
│ └── Dependencies.scala
└── src
└── main
└── scala
公地/ build.sbt
import Dependencies._
lazy val commons = (project in file("."))
.settings(
name := s"$msg commonsproject",
version := "1.0",
scalaVersion := "2.12.2"
)
公地/项目/ Dependencies.scala
object Dependencies {
val msg = "Hello world"
}
当我运行sbt时,我得到了name
[info] Loading project definition from /mydata/workspace/multiproject/commons/project
[info] Set current project to Hello world commonsproject (in build file:/mydata/workspace/multiproject/commons/)
> name
[info] Hello world commonsproject
>
现在,我已将其集成到顶级sbt项目中。
├── build.sbt(top level)
├── commons
│ ├── build.sbt
│ ├── project
│ │ └── Dependencies.scala
│ └── src
│ └── main
├── project
│ └── build.properties
└── src
├── main
│ └── scala
└── test
└── scala
build.sbt
lazy val commons = (project in file("commons"))
.settings(
name := "subproject",
version := "1.0",
scalaVersion := "2.12.2"
)
lazy val root = (project in file("."))
.settings(
name := "rootproject",
version := "1.0",
scalaVersion := "2.12.2"
).aggregate(commons)
当我从顶层运行sbt时,它失败并出现以下错误:
/mydata/workspace/multiproject/commons/build.sbt:1: error: not found: object Dependencies
import Dependencies._
^
/mydata/workspace/multiproject/commons/build.sbt:6: error: not found: value msg
name := s"$msg commonsproject",
^
sbt.compiler.EvalException: Type error in expression
[error] sbt.compiler.EvalException: Type error in expression
[error] Use 'last' for the full log.</pre>
有人可以告诉我们是否可以将Dependencies.scala
保留在common
项目中并且仍能从顶级sbt运行它?
目标是能够在顶级或子项目中运行sbt,同时保持每个项目的依赖性。
欢迎实现我想要的其他设计
谢谢
答案 0 :(得分:2)
您不能在子项目中拥有项目子目录或项目/ * .scala文件。 foo / project / Build.scala将被忽略。
在这种情况下,您的commons
文件被忽略,因为sort -k1,2 -k3,3rn data.txt \
| while read c1 c2 n ; do
if [[ $c1 == $l1 && $c2 == $l2 ]] ; then
((c++))
else
c=0
fi
if (( c < 3 )) ; then
echo $c1 $c2 $n
l1=$c1
l2=$c2
fi
done
是一个子项目 - 这就是您无法访问它的原因。