我有一个自定义插件,可以在任务genWro
中生成一些资源工件。我的插件也设置了:
resourceGenerators in Compile <+= genWro in Compile
负责在打包过程中创建资源。
我想接着Seq[java.util.File]
resourceGenerators
返回并在 sbt-native-packager 的stage
任务期间将其上传到S3。< / p>
我实际上只想生成这些资源并在stage
期间上传,而不是在打包期间上传 - 但一次只能做一件事。基本上,我只想在我的生成版本中生成并上传文件,调用sbt clean stage
并在本地开发期间跳过它,我只需要调用sbt run
。
答案 0 :(得分:1)
鉴于您所说的&#34;我主要关注的是如何将任务中的Seq [File]结果转换为将这些文件上传到S3的自定义任务,并调用该自定义任务只有在调用stage时才会调用。&#34; ,答案可能如下。
您已获得来自sbt-native-packager插件的stage
任务。
> help stage
Create a local directory with all the files laid out as they would be in the final distribution.
您还有另一项任务,例如s3deploy
,将resourceGenerators
转移到S3。
lazy val s3deploy = taskKey[Unit]("Deploys files to S3")
s3deploy := {
println(s"Files to transfer: ${(resourceGenerators in Compile).value}")
}
这里有一个解决方案 - 将s3deploy
连接到stage
:
(stage in Universal) := {
val _ = s3deploy.value
(stage in Universal).value
}
整个build.sbt
如下:
import com.typesafe.sbt.packager.Keys._
packageArchetype.java_application
lazy val s3deploy = taskKey[Unit]("Deploys files to S3")
s3deploy := {
println(s"Files to transfer: ${(resourceGenerators in Compile).value}")
}
(stage in Universal) := {
val _ = s3deploy.value
(stage in Universal).value
}