我有一个集中的存储库,其中维护着一组在多个项目中使用的原始文件。我希望能够在ScalaPB将原型编译成相应的案例类之前将其下载到我的资源中。我已经看到了一些使用dependsOn的示例,但是此存储库不是sbt项目。
我将如何处理?
答案 0 :(得分:1)
考虑将自定义任务定义为download文件到本地资源目录中
lazy val remoteProtoFiles = taskKey[Unit]("Download proto files from remote repository into local resources directory")
remoteProtoFiles := {
import scala.sys.process._
streams.value.log.info("Downloading proto files from remote repository into local resources directory...")
val externalResources = "https://my-external-repo/protofiles/"
val protoFiles = List("foo.proto", "bar.proto")
val resources = (Compile / resourceDirectory).value
protoFiles.foreach { protoFile =>
url(s"$externalResources/$protoFile") #> (resources / protoFile) !
}
}
,然后像这样执行compile
任务depend on remoteProtoFiles
任务
compile in Compile := (compile in Compile).dependsOn(remoteProtoFiles).value
现在执行sbt compile
应该在编译执行之前将原型文件下载到yourProject/src/main/resources
中。