From 35aa6d852716123015f53b7680b3cdced2907d75 Mon Sep 17 00:00:00 2001 From: Magnolia K Date: Tue, 19 Sep 2017 20:56:05 +0900 Subject: [PATCH 1/2] Added project/build.properties --- project/build.properties | 1 + 1 file changed, 1 insertion(+) create mode 100644 project/build.properties 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 From 8973ca9cba9b13670ebcec0c8962182009e68133 Mon Sep 17 00:00:00 2001 From: Magnolia K Date: Tue, 19 Sep 2017 21:58:12 +0900 Subject: [PATCH 2/2] enable AutoPlugin --- README.markdown | 9 ++--- build.sbt | 4 ++- src/main/scala/JRebelPlugin.scala | 60 +++++++++++++++++-------------- 3 files changed, 41 insertions(+), 32 deletions(-) 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/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 } + } }