diff --git a/.travis.yml b/.travis.yml index 6b401a4..462b87f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,19 @@ language: scala -script: sbt test +script: + - sbt ++$TRAVIS_SCALA_VERSION scripted +scala: + - 2.10.6 jdk: - oraclejdk8 +cache: + directories: + - $HOME/.sbt/0.13 + - $HOME/.sbt/boot/scala* + - $HOME/.sbt/cache + - $HOME/.sbt/launchers + - $HOME/.ivy2 +before_cache: + - du -h -d 1 $HOME/.ivy2/ + - du -h -d 2 $HOME/.sbt/ + - find $HOME/.sbt -name "*.lock" -type f -delete + - find $HOME/.ivy2/cache -name "ivydata-*.properties" -type f -delete diff --git a/README.md b/README.md index ef185ad..9deda3b 100644 --- a/README.md +++ b/README.md @@ -42,4 +42,12 @@ To use a specific `jolokia-jvm` version, add the following to your `build.sbt` f ```scala jolokiaVersion := "1.3.2" -``` \ No newline at end of file +``` + +## Testing + +This project uses `sbt-scripted` to run its tests. To test this project run: + +```shell +$ sbt scripted +``` diff --git a/build.sbt b/build.sbt index 04b94e1..b18fbfa 100644 --- a/build.sbt +++ b/build.sbt @@ -1,7 +1,18 @@ +sbtPlugin := true + +organization := "com.jatescher" + name := """sbt-jolokia""" -version := "0.0.1" +version := "0.0.1-SNAPSHOT" + +scalaVersion := "2.10.6" + +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.6") -scalaVersion := "2.11.7" +licenses += ("MIT", url("http://opensource.org/licenses/MIT")) -libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.5" % "test" +// Test scripts +ScriptedPlugin.scriptedSettings +scriptedLaunchOpts := { scriptedLaunchOpts.value ++ Seq("-Xmx1024M", "-Dplugin.version=" + version.value) } +scriptedBufferLog := false diff --git a/project/build.properties b/project/build.properties index 367698f..817bc38 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1,4 +1 @@ -#Activator-generated Properties -#Thu Jan 21 09:34:26 PST 2016 -template.uuid=e17acfbb-1ff5-41f5-b8cf-2c40be6a8340 sbt.version=0.13.9 diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 0000000..c693c13 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1 @@ +libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value diff --git a/src/main/scala/com/jatescher/Hello.scala b/src/main/scala/com/jatescher/Hello.scala deleted file mode 100644 index f29f76a..0000000 --- a/src/main/scala/com/jatescher/Hello.scala +++ /dev/null @@ -1,7 +0,0 @@ -package com.jatescher - -object Hello { - def main(args: Array[String]): Unit = { - println("Hello, world!") - } -} diff --git a/src/main/scala/com/jatescher/Jolokia.scala b/src/main/scala/com/jatescher/Jolokia.scala new file mode 100644 index 0000000..3f28d18 --- /dev/null +++ b/src/main/scala/com/jatescher/Jolokia.scala @@ -0,0 +1,41 @@ +package com.jatescher + +import com.typesafe.sbt.SbtNativePackager._ +import com.typesafe.sbt.packager.archetypes.JavaAppPackaging +import com.typesafe.sbt.packager.archetypes.JavaAppPackaging.autoImport.bashScriptExtraDefines +import sbt._ +import sbt.Keys._ + +object Jolokia extends AutoPlugin { + + object autoImport { + val jolokiaAgent = taskKey[File]("Jolokia agent jar location") + val jolokiaVersion = settingKey[String]("Jolokia version") + val jolokiaPort = settingKey[String]("Jolokia port") + val jolokiaHost = settingKey[String]("Jolokia host") + } + + import autoImport._ + + override def requires = JavaAppPackaging + + val jolokiaConfig = config("jolokia-jvm").hide + + override lazy val projectSettings = Seq( + ivyConfigurations += jolokiaConfig, + jolokiaAgent := findJolokiaAgent(update.value), + jolokiaVersion := "1.3.2", + jolokiaPort := "8778", + jolokiaHost := "0.0.0.0", + libraryDependencies += "org.jolokia" % "jolokia-jvm" % jolokiaVersion.value % jolokiaConfig, + mappings in Universal ++= Seq( + jolokiaAgent.value -> "jolokia/jolokia.jar" + ), + bashScriptExtraDefines += """addJava "-javaagent:${app_home}/../jolokia/jolokia.jar=port=${jolokiaPort},host=${jolokiaHost}"""" + ) + + private[this] val jolokiaFilter: DependencyFilter = configurationFilter("jolokia-jvm") && artifactFilter(`type` = "jar") + + def findJolokiaAgent(report: UpdateReport) = report.matching(jolokiaFilter).head + +} diff --git a/src/sbt-test/sbt-jolokia/simple/Main.scala b/src/sbt-test/sbt-jolokia/simple/Main.scala new file mode 100644 index 0000000..19e8619 --- /dev/null +++ b/src/sbt-test/sbt-jolokia/simple/Main.scala @@ -0,0 +1,3 @@ +object Main extends App { + println("Sentinel") +} diff --git a/src/sbt-test/sbt-jolokia/simple/build.sbt b/src/sbt-test/sbt-jolokia/simple/build.sbt new file mode 100644 index 0000000..9214178 --- /dev/null +++ b/src/sbt-test/sbt-jolokia/simple/build.sbt @@ -0,0 +1,3 @@ +enablePlugins(JavaAppPackaging, Jolokia) + +name := "app" diff --git a/src/sbt-test/sbt-jolokia/simple/project/build.properties b/src/sbt-test/sbt-jolokia/simple/project/build.properties new file mode 100644 index 0000000..817bc38 --- /dev/null +++ b/src/sbt-test/sbt-jolokia/simple/project/build.properties @@ -0,0 +1 @@ +sbt.version=0.13.9 diff --git a/src/sbt-test/sbt-jolokia/simple/project/plugins.sbt b/src/sbt-test/sbt-jolokia/simple/project/plugins.sbt new file mode 100644 index 0000000..8a6cb68 --- /dev/null +++ b/src/sbt-test/sbt-jolokia/simple/project/plugins.sbt @@ -0,0 +1,9 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.0.6") + +{ + val pluginVersion = System.getProperty("plugin.version") + if(pluginVersion == null) + throw new RuntimeException("""|The system property 'plugin.version' is not defined. + |Specify this property using the scriptedLaunchOpts -D.""".stripMargin) + else addSbtPlugin("com.jatescher" % "sbt-jolokia" % pluginVersion) +} diff --git a/src/sbt-test/sbt-jolokia/simple/test b/src/sbt-test/sbt-jolokia/simple/test new file mode 100644 index 0000000..77dc8f5 --- /dev/null +++ b/src/sbt-test/sbt-jolokia/simple/test @@ -0,0 +1,3 @@ +> universal:stage +$ exists target/universal/stage/jolokia/jolokia.jar +$ exec grep -q "addJava .*jolokia.jar" target/universal/stage/bin/app diff --git a/src/test/scala/com/jatescher/HelloSpec.scala b/src/test/scala/com/jatescher/HelloSpec.scala deleted file mode 100644 index c9183fb..0000000 --- a/src/test/scala/com/jatescher/HelloSpec.scala +++ /dev/null @@ -1,9 +0,0 @@ -package com.jatescher - -import org.scalatest._ - -class HelloSpec extends FlatSpec with Matchers { - "Hello" should "have tests" in { - true should === (true) - } -}