2017-03-27 175 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。這樣,當源代碼文件發生變化時,(重新)源代碼生成器將再次被觸發。