SBT中如何在执行runner项目的run任务前先执行core项目的packageBin任务
在SBT中让runner的run任务自动先执行core的packageBin任务
这事儿其实在SBT里很容易搞定,只需要给runner项目的run任务添加一个任务依赖,指定它要先完成core项目的packageBin任务就行。
假设你的多模块项目在build.sbt里是这样定义的,只需要在runner的配置里加上关键的依赖设置:
// 定义core项目 lazy val core = (project in file("core")) .settings( // 这里放core项目的其他配置,比如Scala版本、依赖库等 ) // 定义runner项目,并配置任务依赖 lazy val runner = (project in file("runner")) .dependsOn(core) // 如果runner本来就依赖core的编译产物,这个配置大概率已经存在了 .settings( // 核心配置:让runner的run任务依赖core的packageBin任务 run := (run dependsOn core.packageBin).value )
配置完成后,当你执行sbt runner/run命令时,SBT会自动先执行core/packageBin任务,等它完成之后才会启动runner的run任务。
如果你的runner项目已经有针对run任务的其他配置(比如指定mainClass),只需要把run的定义改成带依赖的版本就好,比如:
run := (run dependsOn core.packageBin).value, mainClass := Some("com.yourcompany.RunnerMain")
内容的提问来源于stack exchange,提问作者Ilya Kirillov
相关产品推荐
相关产品推荐

