From d3df963a13b5d4c9b65b076d2289d8557829846b Mon Sep 17 00:00:00 2001 From: Matei Zaharia Date: Tue, 8 Feb 2011 21:27:36 -0800 Subject: Brought in some reorganization of build file from Hive branch --- project/build/SparkProject.scala | 104 ++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 50 deletions(-) (limited to 'project') diff --git a/project/build/SparkProject.scala b/project/build/SparkProject.scala index 63bd3ff578..484daf5c50 100644 --- a/project/build/SparkProject.scala +++ b/project/build/SparkProject.scala @@ -15,58 +15,62 @@ extends ParentProject(info) with IdeaProject project("examples", "Spark Examples", new ExamplesProject(_), core) class CoreProject(info: ProjectInfo) - extends DefaultProject(info) with Eclipsify with IdeaProject with AssemblyBuilder - { - def testReportDir = outputPath / "test-report" - - // Create an XML test report using ScalaTest's -u option. Unfortunately - // there is currently no way to call this directly from SBT without - // executing a subprocess. - lazy val testReport = task { - log.info("Creating " + testReportDir + "...") - if (!testReportDir.exists) { - testReportDir.asFile.mkdirs() - } - - log.info("Executing org.scalatest.tools.Runner...") - val command = ("scala -classpath " + testClasspath.absString + - " org.scalatest.tools.Runner -o " + - " -u " + testReportDir.absolutePath + - " -p " + (outputPath / "test-classes").absolutePath) - val process = Process(command, path("."), "JAVA_OPTS" -> "-Xmx500m") - process ! - - None - }.dependsOn(compile, testCompile).describedAs("Generate XML test report.") - - def singleJarExclude(base: PathFinder) = { - (base / "scala" ** "*") +++ ( // exclude scala library - (base / "META-INF" ** "*") --- // generally ignore the hell out of META-INF - (base / "META-INF" / "services" ** "*") --- // include all service providers - (base / "META-INF" / "maven" ** "*")) // include all Maven POMs and such - } - - def singleJarTempDir = outputPath / "single-jar-classes" - - def singleJarOutputPath = - outputPath / (name.toLowerCase.replace(" ", "-") + "-single-jar-" + version.toString + ".jar") - - // Create a JAR with Spark Core and all its dependencies. We use some methods in - // the AssemblyBuilder plugin, but because this plugin attempts to package Scala - // too, we leave that out using our own exclude filter (singleJarExclude). - lazy val singleJar = { - packageTask( - Path.lazyPathFinder(assemblyPaths(singleJarTempDir, - assemblyClasspath, - assemblyExtraJars, - singleJarExclude)), - singleJarOutputPath, - packageOptions) - }.dependsOn(compile).describedAs("Build a single JAR with project and its dependencies") - } + extends DefaultProject(info) with Eclipsify with IdeaProject with DepJar with XmlTestReport + {} class ExamplesProject(info: ProjectInfo) extends DefaultProject(info) with Eclipsify with IdeaProject - { + {} +} + + +// Project mixin for an XML-based ScalaTest report. Unfortunately +// there is currently no way to call this directly from SBT without +// executing a subprocess. +trait XmlTestReport extends BasicScalaProject { + def testReportDir = outputPath / "test-report" + + lazy val testReport = task { + log.info("Creating " + testReportDir + "...") + if (!testReportDir.exists) { + testReportDir.asFile.mkdirs() + } + log.info("Executing org.scalatest.tools.Runner...") + val command = ("scala -classpath " + testClasspath.absString + + " org.scalatest.tools.Runner -o " + + " -u " + testReportDir.absolutePath + + " -p " + (outputPath / "test-classes").absolutePath) + Process(command, path("."), "JAVA_OPTS" -> "-Xmx500m") ! + + None + }.dependsOn(compile, testCompile).describedAs("Generate XML test report.") +} + + +// Project mixin for creating a JAR with a project's dependencies. This is based +// on the AssemblyBuilder plugin, but because this plugin attempts to package Scala +// and our project too, we leave that out using our own exclude filter (depJarExclude). +trait DepJar extends AssemblyBuilder { + def depJarExclude(base: PathFinder) = { + (base / "scala" ** "*") +++ // exclude scala library + (base / "spark" ** "*") +++ // exclude Spark classes + ((base / "META-INF" ** "*") --- // generally ignore the hell out of META-INF + (base / "META-INF" / "services" ** "*") --- // include all service providers + (base / "META-INF" / "maven" ** "*")) // include all Maven POMs and such } + + def depJarTempDir = outputPath / "dep-classes" + + def depJarOutputPath = + outputPath / (name.toLowerCase.replace(" ", "-") + "-dep-" + version.toString + ".jar") + + lazy val depJar = { + packageTask( + Path.lazyPathFinder(assemblyPaths(depJarTempDir, + assemblyClasspath, + assemblyExtraJars, + depJarExclude)), + depJarOutputPath, + packageOptions) + }.dependsOn(compile).describedAs("Bundle project's dependencies into a JAR.") } -- cgit v1.2.3