Skip to content

Commit

Permalink
Drop support for sbt 0.13, make the project build with modern IDE (#32)
Browse files Browse the repository at this point in the history
* Drop support for sbt 0.13, make the project build with modern IDE
* Raise error when agent is missing from libraryDependencies
* fix scripted tests
* update dependencies, ensure sbt 1.10.2 in scripted tests
  • Loading branch information
majk-p authored Sep 30, 2024
1 parent 3e0f1a9 commit 17bd3f6
Show file tree
Hide file tree
Showing 28 changed files with 82 additions and 128 deletions.
112 changes: 50 additions & 62 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,26 @@
* Copyright © 2016-2017 Lightbend, Inc. <http://www.lightbend.com>
*/

lazy val `sbt-javaagent` = project in file(".")

sbtPlugin := true

name := "sbt-javaagent"
organization := "com.github.sbt"

// sbt cross build
crossSbtVersions := Seq("0.13.18", "1.2.8")
crossSbtVersions := Seq("1.10.2")

// dependencies
val packagerVersion = "1.3.19"
val packager10xVersion = "1.0.6"
val packager11xVersion = "1.1.6"
val packager12xVersion = "1.2.2"
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % packagerVersion % "provided")
val packagerVersion = "1.10.4"
val packager19xVersion = "1.9.16"

addSbtPlugin(
"com.github.sbt" % "sbt-native-packager" % packagerVersion % "provided"
)

// compile settings
scalacOptions ++= Seq("-encoding", "UTF-8", "-unchecked", "-deprecation", "-feature") ++
{ if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") Seq("-target:jvm-1.6") else Seq.empty }
javacOptions ++= Seq("-encoding", "UTF-8") ++
{ if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") Seq("-source", "1.6", "-target", "1.6") else Seq.empty }
scalacOptions ++= Seq(
"-encoding",
"UTF-8",
"-unchecked",
"-deprecation",
"-feature"
)
javacOptions ++= Seq("-encoding", "UTF-8")

// test agent
lazy val maxwell = project
Expand All @@ -33,58 +31,48 @@ lazy val maxwell = project
organization := "sbt.javaagent.test",
autoScalaLibrary := false,
crossPaths := false,
packageOptions += Package.ManifestAttributes("Premain-Class" -> "maxwell.Maxwell"),
publish := ()
packageOptions += Package
.ManifestAttributes("Premain-Class" -> "maxwell.Maxwell"),
publish := {}
)

// test settings
scriptedSettings
scriptedLaunchOpts ++= Seq(
"-Dproject.version=" + version.value,
"-Dpackager.version=" + packagerVersion,
"-Dpackager.10x.version=" + packager10xVersion,
"-Dpackager.11x.version=" + packager11xVersion,
"-Dpackager.12x.version=" + packager12xVersion
)
scriptedDependencies := {
(publishLocal in maxwell).value
publishLocal.value
}
test in Test := {
(test in Test).value
ScriptedPlugin.scripted.toTask("").value
}

// cross-sbt scripted tests
resourceDirectory in scriptedTests := sourceDirectory.value / "sbt-test"
resourceDirectories in scriptedTests := Seq((resourceDirectory in scriptedTests).value)
resourceDirectories in scriptedTests += sourceDirectory.value / ("sbt-test-" + (sbtBinaryVersion in pluginCrossBuild).value)
includeFilter in scriptedTests := AllPassFilter
excludeFilter in scriptedTests := HiddenFileFilter
resources in scriptedTests := Defaults.collectFiles(resourceDirectories in scriptedTests, includeFilter in scriptedTests, excludeFilter in scriptedTests).value
target in scriptedTests := crossTarget.value / "sbt-test"
copyResources in scriptedTests := {
val testResources = (resources in scriptedTests).value
val testDirectories = (resourceDirectories in scriptedTests).value
val testTarget = (target in scriptedTests).value
val cacheFile = streams.value.cacheDirectory / "copy-sbt-test"
val mappings = (testResources --- testDirectories) pair (rebase(testDirectories, testTarget) | flat(testTarget))
Sync(cacheFile)(mappings)
mappings
}
sbtTestDirectory := (target in scriptedTests).value
scriptedDependencies := {
scriptedDependencies.value
(copyResources in scriptedTests).value
}
// plugin module
lazy val `sbt-javaagent` = (project.in(file(".")))
.enablePlugins(SbtPlugin)
.settings(
name := "sbt-javaagent",
organization := "com.github.sbt",
scriptedBufferLog := false,
scriptedLaunchOpts ++= Seq(
"-Dproject.version=" + version.value,
"-Dpackager.version=" + packagerVersion,
"-Dpackager.19x.version=" + packager19xVersion
),
scriptedDependencies := {
(maxwell / publishLocal).value
publishLocal.value
}
)

// publish settings
publishMavenStyle := true
licenses += "Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.html")
scmInfo := Some(ScmInfo(url("https://github.com/sbt/sbt-javaagent"), "scm:git:git@github.com:sbt/sbt-javaagent.git"))
licenses += "Apache-2.0" -> url(
"http://www.apache.org/licenses/LICENSE-2.0.html"
)
scmInfo := Some(
ScmInfo(
url("https://github.com/sbt/sbt-javaagent"),
"scm:git:git@github.com:sbt/sbt-javaagent.git"
)
)
homepage := scmInfo.value.map(_.browseUrl)
developers := List(
Developer("contributors", "Contributors", "https://github.com/sbt/sbt-javaagent/discussions", url("https://github.com/sbt/sbt-javaagent/graphs/contributors"))
Developer(
"contributors",
"Contributors",
"https://github.com/sbt/sbt-javaagent/discussions",
url("https://github.com/sbt/sbt-javaagent/graphs/contributors")
)
)
publishTo := sonatypePublishTo.value

Expand Down
2 changes: 1 addition & 1 deletion project/build.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
sbt.version=0.13.18
sbt.version=1.10.2
4 changes: 1 addition & 3 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
* Copyright © 2016-2017 Lightbend, Inc. <http://www.lightbend.com>
*/

addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.6")
addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.3")
addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.1.2")

libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value
26 changes: 19 additions & 7 deletions src/main/scala/com/lightbend/sbt/javaagent/JavaAgent.scala
Original file line number Diff line number Diff line change
Expand Up @@ -63,20 +63,32 @@ class JavaAgent extends AutoPlugin {
ivyConfigurations += AgentConfig,
libraryDependencies ++= javaAgents.value.map(_.module),
resolvedJavaAgents := resolveAgents.value,
fork in run := enableFork(fork in run, _.scope.run).value,
connectInput in run := enableFork(fork in run, _.scope.run).value,
fork in Test := enableFork(fork in Test, _.scope.test).value,
javaOptions in run ++= agentOptions(_.agent.scope.run).value,
javaOptions in Test ++= agentOptions(_.agent.scope.test).value,
fullClasspath in Test := filterAgents((fullClasspath in Test).value, resolvedJavaAgents.value)
run/fork := enableFork(run/fork, _.scope.run).value,
run/connectInput := enableFork(run/fork, _.scope.run).value,
Test/fork := enableFork(Test/fork, _.scope.test).value,
run/javaOptions ++= agentOptions(_.agent.scope.run).value,
Test/javaOptions ++= agentOptions(_.agent.scope.test).value,
Test/fullClasspath := filterAgents((Test/fullClasspath).value, resolvedJavaAgents.value)
)

private def resolveAgents = Def.task[Seq[ResolvedAgent]] {
javaAgents.value flatMap { agent =>
val missingAgentDependencies = javaAgents.value.map(_.module).filterNot(libraryDependencies.value.contains)
if (missingAgentDependencies.nonEmpty) {
sys.error(
s"Some agents missing from libraryDependencies. " +
s"It might mean you override libraryDependencies with := instead of adding new ones with ++=. " +
s"Missing agents: $missingAgentDependencies"
)
}
val resolvedAgents = javaAgents.value flatMap { agent =>
update.value.matching(Modules.exactFilter(agent.module)).headOption map {
jar => ResolvedAgent(agent, jar)
}
}
val unresolvedAgents = javaAgents.value.filterNot(agent => resolvedAgents.map(_.agent.module).contains(agent.module))
if (unresolvedAgents.nonEmpty)
sys.error(s"Unable to resolve agents, missing agents: $unresolvedAgents")
else resolvedAgents
}

private def enableFork(forkKey: SettingKey[Boolean], enabled: AgentModule => Boolean) = Def.setting[Boolean] {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,6 @@ object JavaAgentPackaging extends AutoPlugin {
}
}

object NoPlugin extends AutoPlugin

}

object NoPlugin extends AutoPlugin
2 changes: 0 additions & 2 deletions src/sbt-test-0.13/agent/dist_1.0.x/project/plugins.sbt

This file was deleted.

3 changes: 0 additions & 3 deletions src/sbt-test-0.13/agent/dist_1.1.x/build.sbt

This file was deleted.

2 changes: 0 additions & 2 deletions src/sbt-test-0.13/agent/dist_1.1.x/project/plugins.sbt

This file was deleted.

This file was deleted.

2 changes: 0 additions & 2 deletions src/sbt-test-0.13/agent/dist_1.1.x/test

This file was deleted.

14 changes: 0 additions & 14 deletions src/sbt-test-0.13/agent/dist_1.1.x/test.sbt

This file was deleted.

2 changes: 1 addition & 1 deletion src/sbt-test/agent/arguments/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("packager.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.version"))
2 changes: 1 addition & 1 deletion src/sbt-test/agent/compile/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("packager.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.version"))
2 changes: 1 addition & 1 deletion src/sbt-test/agent/confs/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("packager.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.version"))
2 changes: 1 addition & 1 deletion src/sbt-test/agent/dist/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("packager.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.version"))
3 changes: 0 additions & 3 deletions src/sbt-test/agent/dist_1.2.x/build.sbt

This file was deleted.

2 changes: 0 additions & 2 deletions src/sbt-test/agent/dist_1.2.x/project/plugins.sbt

This file was deleted.

1 change: 0 additions & 1 deletion src/sbt-test/agent/dist_1.2.x/src/main/scala/Main.scala

This file was deleted.

2 changes: 0 additions & 2 deletions src/sbt-test/agent/dist_1.2.x/test

This file was deleted.

14 changes: 0 additions & 14 deletions src/sbt-test/agent/dist_1.2.x/test.sbt

This file was deleted.

File renamed without changes.
2 changes: 2 additions & 0 deletions src/sbt-test/agent/dist_1.9.x/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.19x.version"))
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion src/sbt-test/agent/named/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("packager.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.version"))
2 changes: 1 addition & 1 deletion src/sbt-test/agent/provided/project/plugins.sbt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
addSbtPlugin("com.github.sbt" % "sbt-javaagent" % sys.props("project.version"))
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("packager.version"))
addSbtPlugin("com.github.sbt" % "sbt-native-packager" % sys.props("packager.version"))
2 changes: 1 addition & 1 deletion version.sbt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
version in ThisBuild := "0.1.9-SNAPSHOT"
ThisBuild / version := "0.1.9-SNAPSHOT"

0 comments on commit 17bd3f6

Please sign in to comment.