@@ -18,6 +18,9 @@ package pl.project13.scala.sbt
1818
1919import sbt .*
2020import sbt .Keys .*
21+ import sjsonnew .BasicJsonProtocol .*
22+ import pl .project13 .scala .sbt .JmhPluginCompat .*
23+ import xsbti .FileConverter
2124
2225import java .util .Properties
2326
@@ -51,13 +54,23 @@ object JmhPlugin extends AutoPlugin {
5154 run / fork := true , // makes sure that sbt manages classpath for JMH when forking
5255 // allow users to configure another classesDirectory like e.g. test:classDirectory
5356 classDirectory := (Compile / classDirectory).value,
54- dependencyClasspath := ( Compile / dependencyClasspath).value,
57+ dependencyClasspath := Def .uncached(( Compile / dependencyClasspath).value) ,
5558
5659 resourceDirectory := (Compile / resourceDirectory).value,
5760 sourceGenerators := Seq (Def .task { generateJmhSourcesAndResources.value._1 }.taskValue),
5861 resourceGenerators := Seq (Def .task { generateJmhSourcesAndResources.value._2 }.taskValue),
59- generateJmhSourcesAndResources := generateBenchmarkSourcesAndResources(streams.value, crossTarget.value / " jmh-cache" , (Jmh / classDirectory).value, sourceManaged.value, resourceManaged.value, generatorType.value, (Jmh / dependencyClasspath).value, new ForkRun (ForkOptions ())),
60- generateJmhSourcesAndResources := (generateJmhSourcesAndResources dependsOn(Compile / compile)).value,
62+ generateJmhSourcesAndResources := Def .uncached {
63+ generateBenchmarkSourcesAndResources(
64+ streams.value,
65+ crossTarget.value / " jmh-cache" ,
66+ (Jmh / classDirectory).value, sourceManaged.value,
67+ resourceManaged.value,
68+ generatorType.value,
69+ (Jmh / dependencyClasspath).value.map(JmhPluginCompat .toAttributedFile(_, fileConverter.value)),
70+ new ForkRun (ForkOptions ())
71+ )
72+ },
73+ generateJmhSourcesAndResources := generateJmhSourcesAndResources.dependsOn(Compile / compile).value,
6174
6275 // local copy of https://github.com/sbt/sbt/blob/e4231ac03903e174bc9975ee00d34064a1d1f373/main/src/main/scala/sbt/Keys.scala#L400
6376 // so that it does not break on sbt version below 1.4.0
@@ -90,7 +103,7 @@ object JmhPlugin extends AutoPlugin {
90103 }
91104
92105 private def generateBenchmarkSourcesAndResources (s : TaskStreams , cacheDir : File , bytecodeDir : File , sourceDir : File , resourceDir : File , generatorType : String , classpath : Seq [Attributed [File ]], run : ScalaRun ): (Seq [File ], Seq [File ]) = {
93- val inputs : Set [File ] = (bytecodeDir ** " *" ).filter(_.isFile).get.toSet
106+ val inputs : Set [File ] = (bytecodeDir ** " *" ).filter(_.isFile).get() .toSet
94107 val cachedGeneration = FileFunction .cached(cacheDir, FilesInfo .hash) { _ =>
95108 // ignore change report and rebuild it completely
96109 internalGenerateBenchmarkSourcesAndResources(s, bytecodeDir, sourceDir, resourceDir, generatorType, classpath, run, s.log)
@@ -109,7 +122,7 @@ object JmhPlugin extends AutoPlugin {
109122
110123 val mainClass = " org.openjdk.jmh.generators.bytecode.JmhBytecodeGenerator"
111124 val options = Seq (bytecodeDir, sourceDir, resourceDir, generatorType).map(_.toString)
112- run.run(mainClass, classpath.map(_. data), options, log).get
113- ((sourceDir ** " *" ).filter(_.isFile) +++ (resourceDir ** " *" ).filter(_.isFile)).get.toSet
125+ run.run(mainClass, classpath.map(x => JmhPluginCompat .toPath(x. data) ), options, log).get
126+ ((sourceDir ** " *" ).filter(_.isFile) +++ (resourceDir ** " *" ).filter(_.isFile)).get() .toSet
114127 }
115128}
0 commit comments