Skip to content

Commit 17bd3f6

Browse files
authored
Drop support for sbt 0.13, make the project build with modern IDE (#32)
* 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
1 parent 3e0f1a9 commit 17bd3f6

File tree

28 files changed

+82
-128
lines changed

28 files changed

+82
-128
lines changed

build.sbt

Lines changed: 50 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,26 @@
22
* Copyright © 2016-2017 Lightbend, Inc. <http://www.lightbend.com>
33
*/
44

5-
lazy val `sbt-javaagent` = project in file(".")
6-
7-
sbtPlugin := true
8-
9-
name := "sbt-javaagent"
10-
organization := "com.github.sbt"
11-
125
// sbt cross build
13-
crossSbtVersions := Seq("0.13.18", "1.2.8")
6+
crossSbtVersions := Seq("1.10.2")
147

158
// dependencies
16-
val packagerVersion = "1.3.19"
17-
val packager10xVersion = "1.0.6"
18-
val packager11xVersion = "1.1.6"
19-
val packager12xVersion = "1.2.2"
20-
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % packagerVersion % "provided")
9+
val packagerVersion = "1.10.4"
10+
val packager19xVersion = "1.9.16"
11+
12+
addSbtPlugin(
13+
"com.github.sbt" % "sbt-native-packager" % packagerVersion % "provided"
14+
)
2115

2216
// compile settings
23-
scalacOptions ++= Seq("-encoding", "UTF-8", "-unchecked", "-deprecation", "-feature") ++
24-
{ if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") Seq("-target:jvm-1.6") else Seq.empty }
25-
javacOptions ++= Seq("-encoding", "UTF-8") ++
26-
{ if ((sbtBinaryVersion in pluginCrossBuild).value == "0.13") Seq("-source", "1.6", "-target", "1.6") else Seq.empty }
17+
scalacOptions ++= Seq(
18+
"-encoding",
19+
"UTF-8",
20+
"-unchecked",
21+
"-deprecation",
22+
"-feature"
23+
)
24+
javacOptions ++= Seq("-encoding", "UTF-8")
2725

2826
// test agent
2927
lazy val maxwell = project
@@ -33,58 +31,48 @@ lazy val maxwell = project
3331
organization := "sbt.javaagent.test",
3432
autoScalaLibrary := false,
3533
crossPaths := false,
36-
packageOptions += Package.ManifestAttributes("Premain-Class" -> "maxwell.Maxwell"),
37-
publish := ()
34+
packageOptions += Package
35+
.ManifestAttributes("Premain-Class" -> "maxwell.Maxwell"),
36+
publish := {}
3837
)
3938

40-
// test settings
41-
scriptedSettings
42-
scriptedLaunchOpts ++= Seq(
43-
"-Dproject.version=" + version.value,
44-
"-Dpackager.version=" + packagerVersion,
45-
"-Dpackager.10x.version=" + packager10xVersion,
46-
"-Dpackager.11x.version=" + packager11xVersion,
47-
"-Dpackager.12x.version=" + packager12xVersion
48-
)
49-
scriptedDependencies := {
50-
(publishLocal in maxwell).value
51-
publishLocal.value
52-
}
53-
test in Test := {
54-
(test in Test).value
55-
ScriptedPlugin.scripted.toTask("").value
56-
}
57-
58-
// cross-sbt scripted tests
59-
resourceDirectory in scriptedTests := sourceDirectory.value / "sbt-test"
60-
resourceDirectories in scriptedTests := Seq((resourceDirectory in scriptedTests).value)
61-
resourceDirectories in scriptedTests += sourceDirectory.value / ("sbt-test-" + (sbtBinaryVersion in pluginCrossBuild).value)
62-
includeFilter in scriptedTests := AllPassFilter
63-
excludeFilter in scriptedTests := HiddenFileFilter
64-
resources in scriptedTests := Defaults.collectFiles(resourceDirectories in scriptedTests, includeFilter in scriptedTests, excludeFilter in scriptedTests).value
65-
target in scriptedTests := crossTarget.value / "sbt-test"
66-
copyResources in scriptedTests := {
67-
val testResources = (resources in scriptedTests).value
68-
val testDirectories = (resourceDirectories in scriptedTests).value
69-
val testTarget = (target in scriptedTests).value
70-
val cacheFile = streams.value.cacheDirectory / "copy-sbt-test"
71-
val mappings = (testResources --- testDirectories) pair (rebase(testDirectories, testTarget) | flat(testTarget))
72-
Sync(cacheFile)(mappings)
73-
mappings
74-
}
75-
sbtTestDirectory := (target in scriptedTests).value
76-
scriptedDependencies := {
77-
scriptedDependencies.value
78-
(copyResources in scriptedTests).value
79-
}
39+
// plugin module
40+
lazy val `sbt-javaagent` = (project.in(file(".")))
41+
.enablePlugins(SbtPlugin)
42+
.settings(
43+
name := "sbt-javaagent",
44+
organization := "com.github.sbt",
45+
scriptedBufferLog := false,
46+
scriptedLaunchOpts ++= Seq(
47+
"-Dproject.version=" + version.value,
48+
"-Dpackager.version=" + packagerVersion,
49+
"-Dpackager.19x.version=" + packager19xVersion
50+
),
51+
scriptedDependencies := {
52+
(maxwell / publishLocal).value
53+
publishLocal.value
54+
}
55+
)
8056

8157
// publish settings
8258
publishMavenStyle := true
83-
licenses += "Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.html")
84-
scmInfo := Some(ScmInfo(url("https://github.com/sbt/sbt-javaagent"), "scm:git:[email protected]:sbt/sbt-javaagent.git"))
59+
licenses += "Apache-2.0" -> url(
60+
"http://www.apache.org/licenses/LICENSE-2.0.html"
61+
)
62+
scmInfo := Some(
63+
ScmInfo(
64+
url("https://github.com/sbt/sbt-javaagent"),
65+
"scm:git:[email protected]:sbt/sbt-javaagent.git"
66+
)
67+
)
8568
homepage := scmInfo.value.map(_.browseUrl)
8669
developers := List(
87-
Developer("contributors", "Contributors", "https://github.com/sbt/sbt-javaagent/discussions", url("https://github.com/sbt/sbt-javaagent/graphs/contributors"))
70+
Developer(
71+
"contributors",
72+
"Contributors",
73+
"https://github.com/sbt/sbt-javaagent/discussions",
74+
url("https://github.com/sbt/sbt-javaagent/graphs/contributors")
75+
)
8876
)
8977
publishTo := sonatypePublishTo.value
9078

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=0.13.18
1+
sbt.version=1.10.2

project/plugins.sbt

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
* Copyright © 2016-2017 Lightbend, Inc. <http://www.lightbend.com>
33
*/
44

5-
addSbtPlugin("com.github.gseitz" % "sbt-release" % "1.0.6")
5+
addSbtPlugin("com.github.sbt" % "sbt-release" % "1.4.0")
66
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "2.3")
77
addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.1.2")
8-
9-
libraryDependencies += "org.scala-sbt" % "scripted-plugin" % sbtVersion.value

src/main/scala/com/lightbend/sbt/javaagent/JavaAgent.scala

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,32 @@ class JavaAgent extends AutoPlugin {
6363
ivyConfigurations += AgentConfig,
6464
libraryDependencies ++= javaAgents.value.map(_.module),
6565
resolvedJavaAgents := resolveAgents.value,
66-
fork in run := enableFork(fork in run, _.scope.run).value,
67-
connectInput in run := enableFork(fork in run, _.scope.run).value,
68-
fork in Test := enableFork(fork in Test, _.scope.test).value,
69-
javaOptions in run ++= agentOptions(_.agent.scope.run).value,
70-
javaOptions in Test ++= agentOptions(_.agent.scope.test).value,
71-
fullClasspath in Test := filterAgents((fullClasspath in Test).value, resolvedJavaAgents.value)
66+
run/fork := enableFork(run/fork, _.scope.run).value,
67+
run/connectInput := enableFork(run/fork, _.scope.run).value,
68+
Test/fork := enableFork(Test/fork, _.scope.test).value,
69+
run/javaOptions ++= agentOptions(_.agent.scope.run).value,
70+
Test/javaOptions ++= agentOptions(_.agent.scope.test).value,
71+
Test/fullClasspath := filterAgents((Test/fullClasspath).value, resolvedJavaAgents.value)
7272
)
7373

7474
private def resolveAgents = Def.task[Seq[ResolvedAgent]] {
75-
javaAgents.value flatMap { agent =>
75+
val missingAgentDependencies = javaAgents.value.map(_.module).filterNot(libraryDependencies.value.contains)
76+
if (missingAgentDependencies.nonEmpty) {
77+
sys.error(
78+
s"Some agents missing from libraryDependencies. " +
79+
s"It might mean you override libraryDependencies with := instead of adding new ones with ++=. " +
80+
s"Missing agents: $missingAgentDependencies"
81+
)
82+
}
83+
val resolvedAgents = javaAgents.value flatMap { agent =>
7684
update.value.matching(Modules.exactFilter(agent.module)).headOption map {
7785
jar => ResolvedAgent(agent, jar)
7886
}
7987
}
88+
val unresolvedAgents = javaAgents.value.filterNot(agent => resolvedAgents.map(_.agent.module).contains(agent.module))
89+
if (unresolvedAgents.nonEmpty)
90+
sys.error(s"Unable to resolve agents, missing agents: $unresolvedAgents")
91+
else resolvedAgents
8092
}
8193

8294
private def enableFork(forkKey: SettingKey[Boolean], enabled: AgentModule => Boolean) = Def.setting[Boolean] {

src/main/scala/com/lightbend/sbt/javaagent/JavaAgentPackaging.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,6 @@ object JavaAgentPackaging extends AutoPlugin {
7878
}
7979
}
8080

81-
object NoPlugin extends AutoPlugin
82-
8381
}
82+
83+
object NoPlugin extends AutoPlugin

src/sbt-test-0.13/agent/dist_1.0.x/project/plugins.sbt

Lines changed: 0 additions & 2 deletions
This file was deleted.

src/sbt-test-0.13/agent/dist_1.1.x/build.sbt

Lines changed: 0 additions & 3 deletions
This file was deleted.

src/sbt-test-0.13/agent/dist_1.1.x/project/plugins.sbt

Lines changed: 0 additions & 2 deletions
This file was deleted.

src/sbt-test-0.13/agent/dist_1.1.x/src/main/scala/Main.scala

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/sbt-test-0.13/agent/dist_1.1.x/test

Lines changed: 0 additions & 2 deletions
This file was deleted.

0 commit comments

Comments
 (0)