override def projectSettings: Seq[Setting[_]] = inConfig()

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
      },