我有一个 sbt 多项目设置,项目结构如下
项目父
|
|-- 客户
|
|-- 服务器
父项目是一个虚拟项目。project/MyBuild.scala 文件是这样的
import sbt._
import Keys._
object MyBuild extends Build {
lazy val root = Project(id = "parent", base = file(".")) aggregate(server, client)
lazy val server = Project(id = "server", base = file("server"))
lazy val client = Project(id = "client", base = file("client")) dependsOn( server )
}
客户端和服务器是两个独立的项目,带有 testng 测试设置,它们都独立工作。
要运行 testng,我使用的是 testng 接口插件“sbt-testng-plugin”,它需要指定 testng 测试套件配置 xml。
在客户端和服务器的 build.sbt 文件中,我都指定了
testNGSuites := Seq( "src/test/resources/testng.xml")
这样 testng 可以找到 testng.xml 来运行测试。
在父项目中,如果我输入
sbt 编译
它分别编译所有子项目(客户端和服务器)。这很好用。
但如果我输入,
sbt测试
父项目 sbt 尝试运行 testng 测试,但由于找不到文件而失败
src/test/resources/testng.xml
在父项目中。由于 parent 只是一个虚拟目录,并且没有
src/test/resources/testng.xml
因此测试失败。
现在我的问题是如何配置设置以允许子项目以及父项目运行测试?
我在想,如果我能以某种方式在子项目中设置这样的设置
testNGSuites := Seq( base + "src/test/resources/testng.xml")
所以 testNGSuites 对于子项目而不是父项目是绝对的。
但是由于我刚开始使用 sbt,我不确定如何在 sbt 中获取“基本”路径。
我尝试使用 baseDirectory,但它是一个设置键而不是值本身。
任何帮助将不胜感激。
谢谢