Here is a possible solution:
rename your ivy.xml to ivy.xml.template
ixy.xml.template and project.properties should be in the base folder
Add this to base_folder / project / project / build.scala
.
import java.io.FileInputStream
import java.util.Properties
import scala.collection.JavaConversions._
import sbt._
import Keys._
object build extends Build {
def readProperties(filename: String): Map[String, String] = {
try {
val prop = new Properties()
prop.load(new FileInputStream(filename))
prop.stringPropertyNames().map( k => (k,prop.getProperty(k))).toMap
} catch {
case e: Exception =>
e.printStackTrace()
Map()
}
}
def processIvyXml(base: File): Seq[File] = {
val properties = readProperties((base/"../project.properties").getAbsolutePath)
val ivyXml: String = sbt.IO.read(base/"../ivy.xml.template")
val result = properties.keys.foldLeft(ivyXml){
(tmpXml,key) => tmpXml.replaceAll( "\\$\\{"+key+"\\}" , properties(key))
}
sbt.IO.write(base/"../ivy.xml",result)
Seq()
}
lazy val root = project.in(file(".")).settings(
resourceGenerators in Compile <+= (baseDirectory in Compile) map { base =>
processIvyXml(base)
}
)
}
project.properties ivy.xml.template ivy.xml, project.properties
ivy.xml .gitignore .
, , , , project.properties, sbt ( sbt)
, , .