2017-03-27 176 views
1

在Play项目中,每次编译后,SBT任务都必须生成JSON文件。多次执行SBT任务

lazy val generateSchema = taskKey[Unit]("Generate schema.json file") 
fullRunTask(generateSchema, Compile, "models.GenerateSchema") 
generateSchema <<= generateSchema triggeredBy (compile in Compile) 

但是一旦编译完成,这个任务会被执行多次。即使在编译后刷新页面,它也会被执行多次。我认为每个类编译时都会执行该任务。有没有办法让任务在编译后只运行一次,而在页面刚刚刷新时不运行?

回答

0

我认为您需要使用sourceGeneratorsresourceGenerators,因为那些只能在每个编译中运行一次,请参阅doc here

除此之外,您很可能还需要在生成schema.json文件的源代码上使用watchSources。这样,当源代码文件发生变化时,(重新)源代码生成器将再次被触发。