diff options
5 files changed, 51 insertions, 4 deletions
diff --git a/core/src/main/scala/mill/modules/Util.scala b/core/src/main/scala/mill/modules/Util.scala new file mode 100644 index 00000000..cd674bad --- /dev/null +++ b/core/src/main/scala/mill/modules/Util.scala @@ -0,0 +1,26 @@ +package mill.modules + +import ammonite.ops.RelPath +import mill.eval.PathRef +import mill.util.Ctx + +object Util { + def download(url: String, dest: RelPath)(implicit ctx: Ctx.DestCtx) = { + ammonite.ops.mkdir(ctx.dest) + val out = ctx.dest / dest + + val website = new java.net.URI(url).toURL + val rbc = java.nio.channels.Channels.newChannel(website.openStream) + try{ + val fos = new java.io.FileOutputStream(out.toIO) + try{ + fos.getChannel.transferFrom(rbc, 0, java.lang.Long.MAX_VALUE) + PathRef(out) + } finally{ + fos.close() + } + } finally{ + rbc.close() + } + } +} diff --git a/integration/src/test/resources/better-files/build.sc b/integration/src/test/resources/better-files/build.sc index e541e3f1..582d3400 100644 --- a/integration/src/test/resources/better-files/build.sc +++ b/integration/src/test/resources/better-files/build.sc @@ -75,7 +75,12 @@ object benchmarks extends BetterFilesModule{ def moduleDeps = Seq(core) def ivyDeps = Agg( ivy"commons-io:commons-io:2.5" - // "fastjavaio" % "fastjavaio" % "1.0" from "https://github.com/williamfiset/FastJavaIO/releases/download/v1.0/fastjavaio.jar" + ) + def depClasspath = Agg( + mill.modules.Util.download( + "https://github.com/williamfiset/FastJavaIO/releases/download/v1.0/fastjavaio.jar", + "fastjavaio.jar" + ) ) } diff --git a/integration/src/test/scala/mill/integration/BetterFilesTests.scala b/integration/src/test/scala/mill/integration/BetterFilesTests.scala index a6207d87..7ee943df 100644 --- a/integration/src/test/scala/mill/integration/BetterFilesTests.scala +++ b/integration/src/test/scala/mill/integration/BetterFilesTests.scala @@ -10,6 +10,7 @@ object BetterFilesTests extends IntegrationTestSuite("MILL_BETTERFILES_REPO", "b assert(eval("core.test")) assert(eval("akka.test")) + assert(eval("benchmarks.test.compile")) val coreTestMeta = meta("core.test.test") assert(coreTestMeta.contains("better.files.FileSpec")) diff --git a/scalalib/src/main/scala/mill/scalalib/Lib.scala b/scalalib/src/main/scala/mill/scalalib/Lib.scala index 8a98d724..a038a59b 100644 --- a/scalalib/src/main/scala/mill/scalalib/Lib.scala +++ b/scalalib/src/main/scala/mill/scalalib/Lib.scala @@ -128,7 +128,12 @@ object Lib{ val newResult = ic.compile( ic.inputs( classpath = classesIODir +: compileClasspathFiles, - sources = sources.filter(_.toIO.exists()).flatMap(ls.rec).filter(x => x.isFile && x.ext == "scala").map(_.toIO).toArray, + sources = for{ + root <- sources.toArray + if exists(root) + path <- ls.rec(root) + if path.isFile && (path.ext == "scala" || path.ext == "java") + } yield path.toIO, classesDirectory = classesIODir, scalacOptions = (scalacPluginClasspath.map(jar => s"-Xplugin:${jar}") ++ scalacOptions).toArray, javacOptions = javacOptions.toArray, diff --git a/scalalib/src/main/scala/mill/scalalib/MiscModule.scala b/scalalib/src/main/scala/mill/scalalib/MiscModule.scala index 52a95337..502ba461 100644 --- a/scalalib/src/main/scala/mill/scalalib/MiscModule.scala +++ b/scalalib/src/main/scala/mill/scalalib/MiscModule.scala @@ -8,11 +8,21 @@ import mill.util.Loose.Agg trait SbtModule extends ScalaModule { outer => - override def sources = T.input{ Agg(PathRef(basePath / 'src / 'main / 'scala)) } + override def sources = T.input{ + Agg( + PathRef(basePath / 'src / 'main / 'scala), + PathRef(basePath / 'src / 'main / 'java) + ) + } override def resources = T.input{ Agg(PathRef(basePath / 'src / 'main / 'resources)) } trait Tests extends super.Tests { override def basePath = outer.basePath - override def sources = T.input{ Agg(PathRef(basePath / 'src / 'test / 'scala)) } + override def sources = T.input{ + Agg( + PathRef(basePath / 'src / 'test / 'scala), + PathRef(basePath / 'src / 'test / 'java) + ) + } override def resources = T.input{ Agg(PathRef(basePath / 'src / 'test / 'resources)) } } } |