diff --git a/README.markdown b/README.markdown index 0ab57af..d9ac097 100644 --- a/README.markdown +++ b/README.markdown @@ -5,7 +5,7 @@ sbt-jrebel-plugin sbt-jrebel-plugin is a plugin for [Simple Build Tool](http://www.scala-sbt.org) that generates configuration files (rebel.xml) for [JRebel](http://www.zeroturnaround.com/jrebel/). A rebel.xml is not always required but is recommended because if you don't have one, JRebel cannot understand the layout of your project and might fail to reload changes. You also cannot reload changes from separate projects. -**Supported SBT versions: 0.13.x** +**Supported SBT versions: 0.13.x and 1.x** ## Features @@ -25,11 +25,12 @@ __You should always disable sbt-jrebel-plugin when publishing artifacts somewher Add the plugin declaration to project/plugins.sbt: - addSbtPlugin("fi.gekkio.sbtplugins" % "sbt-jrebel-plugin" % "0.10.0") + addSbtPlugin("fi.gekkio.sbtplugins" % "sbt-jrebel-plugin" % "0.20.0") -Then include the plugin settings in your project definition: +Then enable the plugin and include settings in your project definition (build.sbt): - seq(jrebelSettings: _*) + enablePlugins(JRebelPlugin) + JRebelPlugin.projectSettings If you are using [xsbt-web-plugin](https://github.com/earldouglas/xsbt-web-plugin) and want to reload web resources, also add this: diff --git a/build.sbt b/build.sbt index b9ad374..dcc2ce2 100644 --- a/build.sbt +++ b/build.sbt @@ -2,7 +2,9 @@ organization := "fi.gekkio.sbtplugins" name := "sbt-jrebel-plugin" -version := "0.10.0" +version := "0.20.0" + +crossSbtVersions := Seq("0.13.16", "1.0.2") sbtPlugin := true diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000..c091b86 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.16 diff --git a/src/main/scala/JRebelPlugin.scala b/src/main/scala/JRebelPlugin.scala index 17326c7..bff9d97 100644 --- a/src/main/scala/JRebelPlugin.scala +++ b/src/main/scala/JRebelPlugin.scala @@ -5,7 +5,7 @@ import sbt.Keys._ import sbt.Scope.GlobalScope import scala.xml._ -object JRebelPlugin extends Plugin { +object JRebelPlugin extends AutoPlugin { object jrebel { val classpath = SettingKey[Seq[File]]("jrebel-classpath") val enabled = SettingKey[Boolean]("jrebel-enabled") @@ -16,14 +16,16 @@ object JRebelPlugin extends Plugin { val jrebelGenerate = TaskKey[Seq[File]]("jrebel-generate") val jrebelSettings: Seq[Def.Setting[_]] = Seq[Setting[_]]( - jrebel.classpath <<= Seq(Keys.classDirectory in Compile, Keys.classDirectory in Test).join, + jrebel.classpath := (Seq(Keys.classDirectory in Compile, Keys.classDirectory in Test).join).value, jrebel.enabled := (java.lang.Package.getPackage("com.zeroturnaround.javarebel") != null), - jrebel.rebelXml <<= (resourceManaged in Compile) { _ / "rebel.xml" }, + jrebel.rebelXml := ((resourceManaged in Compile) { _ / "rebel.xml" }).value, jrebel.webLinks := Seq(), - jrebelGenerate <<= rebelXmlTask, - resourceGenerators in Compile <+= jrebelGenerate + jrebelGenerate := rebelXmlTask.value, + resourceGenerators in Compile += Def.task { jrebelGenerate.value } ) + override lazy val projectSettings = jrebelSettings + private def dirXml(dir: File) = private def webLinkXml(link: File) = @@ -33,27 +35,31 @@ object JRebelPlugin extends Plugin { - private def rebelXmlTask: Def.Initialize[Task[Seq[File]]] = - (jrebel.enabled, jrebel.classpath, jrebel.rebelXml, jrebel.webLinks, state) map { - (enabled, classpath, rebelXml, webLinks, state) => - if (!enabled) Nil - else { - val xml = - - - { classpath.map(dirXml) } - - { - webLinks.map(webLinkXml) - } - - - IO.touch(rebelXml) - XML.save(rebelXml.absolutePath, xml, "UTF-8", true) - - state.log.info("Wrote rebel.xml to %s".format(rebelXml.absolutePath)) - - rebelXml :: Nil - } + private def rebelXmlTask: Def.Initialize[Task[Seq[File]]] = Def.task { + val enabled = jrebel.enabled.value + val classpath = jrebel.classpath.value + val rebelXml = jrebel.rebelXml.value + val webLinks = jrebel.webLinks.value + val s = state.value + + if (!enabled) Nil + else { + val xml = + + + { classpath.map(dirXml) } + + { + webLinks.map(webLinkXml) + } + + + IO.touch(rebelXml) + XML.save(rebelXml.absolutePath, xml, "UTF-8", true) + + s.log.info("Wrote rebel.xml to %s".format(rebelXml.absolutePath)) + + rebelXml :: Nil } + } }