• 如何增加对SBT p块的外部依赖,并在项目和原始类别上提供:
具体 我有一个简单的缩略语,可以操作我们测试小组的试样,进行一些员额处理。 简略版本:
import sbt._
import java.util.ArrayList
import Keys._
import org.testng._
object RunTestSuitesPlugin extends Plugin {
lazy val runTestSuites = TaskKey[Unit]("run-test-suites", "runs TestNG test suites")
lazy val testSuites = SettingKey[Seq[String]]("test-suites", "list of test suites to run")
class JavaListWrapper[T](val seq: Seq[T]) {
def toJavaList = seq.foldLeft(new java.util.ArrayList[T](seq.size)) { (al, e) => al.add(e); al }
}
implicit def listToJavaList[T](l: Seq[T]) = new JavaListWrapper(l)
def runTestSuitesTask = runTestSuites <<= (target, streams, testSuites) map {
(targetDirectory, taskStream, suites) =>
import taskStream.log
log.info("running test suites: " + suites)
runSuites(suites)
}
private def runSuites(testSuites: Seq[String]) = {
var tester = new TestNG
tester.setTestSuites(testSuites.toJavaList)
tester.run()
}
def testSuiteSettings = {
inConfig(Compile)(Seq(
runTestSuitesTask,
testSuites := Seq("testsuites/mysuite.xml"),
libraryDependencies += "org.testng" % "testng" % "5.14"))
}
}
问题在于,当我把这一金字添加到一个项目中,并用run-test-appes加以管理时。 之后,它未能达到java.lang.NoClassDefFoundError:org/testng/NG,尽管show full-classpath显示testng.jar上下级。
因此,在执行假肢时使用的班次与我的项目中的班次有所不同,因此我如何在这两个地方出现假想的依赖?