我有一个sbt多项目设置,项目结构类似于以下
项目家长
|
| - 客户
|
| - 服务器
父项目是一个虚拟项目。项目/ 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测试套件config xml。
在客户端和服务器的build.sbt文件中,我已指定
testNGSuites := Seq( "src/test/resources/testng.xml")
以便testng可以找到testng.xml来运行测试。
在父项目中,如果我输入
sbt compile
它分别编译所有子项目(客户端和服务器)。这很好用。
但如果我输入,
sbt test
父项目sbt尝试运行testng测试,但由于无法找到文件而失败
src/test/resources/testng.xml
在父项目中。由于父只是一个虚拟目录,并且没有
src/test/resources/testng.xml
因此测试失败。
现在我的问题是如何配置设置以允许子项目以及父项目运行测试?
我在想,如果我能以某种方式在子项目中设置类似的设置
testNGSuites := Seq( base + "src/test/resources/testng.xml")
所以testNGSuites对于子项目而言绝对是父项目。
但由于我刚开始使用sbt,我不知道如何在sbt中获得“基础”路径。
我尝试使用baseDirectory,但它是一个设置键而不是值本身。
任何帮助都会很感激。
感谢