Czy sbt ma coś takiego jak zadanie processResources klasy z obsługą ReplaceTokens?

Przechodzimy do Scala / SBT ze stosu Java / Gradle. Nasze kompilacje stopniowe wykorzystywały zadanie o nazwie processResources i niektóre elementy filtrujące Ant o nazwie ReplaceTokens, aby dynamicznie zamieniać tokeny w pliku .properties bez konieczności zmiany pliku .properties (zmieniając tylko wynik). Zadanie stopniowe wygląda tak:

processResources {
  def whoami = System.getProperty( 'user.name' );
  def hostname = InetAddress.getLocalHost().getHostName()
  def buildTimestamp = new Date().format('yyyy-MM-dd HH:mm:ss z')

  filter ReplaceTokens, tokens: [
          "buildsig.version" : project.version,
          "buildsig.classifier" : project.classifier,
          "buildsig.timestamp" : buildTimestamp,
          "buildsig.user" : whoami,
          "buildsig.system" : hostname,
          "buildsig.tag" : buildTag
      ]
}

To zadanie lokalizuje wszystkie pliki szablonów w katalogu src / main / resources, wykonuje wymagane podstawienia i wyświetla wyniki w kompilacji / zasobach / głównym. Innymi słowy przekształca src / main / resources / buildsig.properties z ...

[email protected]@
[email protected]@
[email protected]@
[email protected]@
[email protected]@
[email protected]@

... do zbudowania / resources / main / buildsig.properties ...

buildsig.version=1.6.5
buildsig.classifier=RELEASE
buildsig.timestamp=2013-05-06 09:46:52 PDT
buildsig.user=jenkins
buildsig.system=bobk-mbp.local
buildsig.tag=dev

Który ostatecznie trafia do pliku WAR w WEB-INF / classes / buildsig.properties. Działa to jak mistrz do rejestrowania informacji specyficznych dla kompilacji w pliku właściwości, który jest ładowany ze ścieżki klasy w czasie wykonywania.

Co mam zrobić w SBT, aby zrobić coś takiego? Jestem nowy w Scala / SBT, więc proszę mi wybaczyć, jeśli to wydaje się głupim pytaniem. Na koniec tego, czego potrzebuję, to sposób na wyciągnięcie pewnych informacji ze środowiska, w którym buduję, i umieszczenie tych informacji w pliku właściwości, który jest ścieżką klasy ładowaną w czasie wykonywania. Wszelkie spostrzeżenia, które możesz podać, aby pomóc mi to zrobić, są bardzo mile widziane.

questionAnswers(2)

yourAnswerToTheQuestion