scalaVersion := "2.10.3-RC1" // Uncomment to test with a locally built copy of Scala. // scalaHome := Some(file("/code/scala2/build/pack")) organization := "org.scala-lang.modules.async" // TODO new org name under scala-lang. name := "scala-async" version := "1.0.0-SNAPSHOT" libraryDependencies <++= (scalaVersion) { sv => Seq( "org.scala-lang" % "scala-reflect" % sv % "provided", "org.scala-lang" % "scala-compiler" % sv % "provided" ) } libraryDependencies += "junit" % "junit-dep" % "4.10" % "test" libraryDependencies += "com.novocode" % "junit-interface" % "0.10" % "test" testOptions += Tests.Argument(TestFrameworks.JUnit, "-q", "-v", "-s") parallelExecution in Global := false autoCompilerPlugins := true scalacOptions ++= (scalaHome.value match { case Some(sh) => // Use continuations plugin from the local scala instance val continuationsJar = sh / "misc" / "scala-devel" / "plugins" / "continuations.jar" ("-Xplugin:" + continuationsJar.getAbsolutePath) :: Nil case None => Nil }) libraryDependencies ++= (scalaHome.value match { case Some(sh) => Nil case None => // Use continuations plugin from the published artifact. compilerPlugin("org.scala-lang.plugins" % "continuations" % scalaVersion.value) :: Nil }) scalacOptions += "-P:continuations:enable" scalacOptions in compile ++= Seq("-optimize", "-deprecation", "-unchecked", "-Xlint", "-feature") scalacOptions in Test ++= Seq("-Yrangepos") // Generate $name.properties to store our version as well as the scala version used to build resourceGenerators in Compile <+= Def.task { val props = new java.util.Properties props.put("version.number", version.value) props.put("scala.version.number", scalaVersion.value) props.put("scala.binary.version.number", scalaBinaryVersion.value) val file = (resourceManaged in Compile).value / s"${name.value}.properties" IO.write(props, null, file) Seq(file) } mappings in (Compile, packageBin) += { (baseDirectory.value / s"${name.value}.properties") -> s"${name.value}.properties" } description := "An asynchronous programming facility for Scala, in the spirit of C# await/async" homepage := Some(url("http://github.com/scala/async")) startYear := Some(2012) licenses +=("Scala license", url("https://github.com/scala/async/blob/master/LICENSE")) // Uncomment to disable test compilation. // (sources in Test) ~= ((xs: Seq[File]) => xs.filter(f => Seq("TreeInterrogation", "package").exists(f.name.contains))) // maven publishing publishTo := { val nexus = "https://oss.sonatype.org/" val repo = if (version.value.trim.endsWith("SNAPSHOT")) "snapshots" at nexus + "content/repositories/snapshots" else "releases" at nexus + "service/local/staging/deploy/maven2" Some(repo) } publishMavenStyle := true publishArtifact in Test := false pomIncludeRepository := { _ => false } pomExtra := ( phaller Philipp Haller +1 http://github.com/phaller retronym Jason Zaugg +1 http://github.com/retronym git@github.com:scala/async.git/ scm:git:git@github.com:scala/async.git )