in project/SbtMavenPlugin.scala [35:76]
override def projectSettings: Seq[Setting[_]] = inConfig(Compile)(unscopedSettings)
def unscopedSettings =
Seq(
(mavenGeneratePluginXml / sourceDirectory) := sourceDirectory.value / "maven",
(mavenGeneratePluginXml / sources) :=
Seq((mavenGeneratePluginXml / sourceDirectory).value / "plugin.xml").filter(_.exists()),
(mavenGeneratePluginXml / target) := target.value / "maven-plugin-xml",
managedResourceDirectories += (mavenGeneratePluginXml / target).value,
mavenGeneratePluginXml := {
val files = (mavenGeneratePluginXml / sources).value
val outDir = (mavenGeneratePluginXml / target).value / "META-INF" / "maven"
IO.createDirectory(outDir)
val pid = projectID.value
val pi = projectInfo.value
val deps = allDependencies.value
val sv = scalaVersion.value
val sbv = scalaBinaryVersion.value
val log = streams.value.log
val configHash = Seq(pid.toString, pi.toString, deps.toString, sv, sbv).hashCode()
val cacheFile = streams.value.cacheDirectory / "maven.plugin.xml.cache"
val cachedHash = Some(cacheFile).filter(_.exists()).flatMap { file => Try(IO.read(file).toInt).toOption }
val configChanged = cachedHash.forall(_ != configHash)
val outFiles = files.map { file =>
val outFile = outDir / file.getName
if (file.lastModified() > outFile.lastModified() || configChanged) {
log.info(s"Generating $outFile from template")
val template = XML.loadFile(file)
val processed = processTemplate(template, pid, pi, deps, CrossVersion(sv, sbv), log)
IO.write(outFile, new PrettyPrinter(120, 2).format(processed))
}
outFile
}
IO.write(cacheFile, configHash.toString)
outFiles
},