[GEARPUMP-226] refactor build files Refactored build files as follows
1. break `Build.scala` into parts for different module categories, e.g. `BuildExternals`, `BuildDashboard`. 2. libraries to shade are now added as managed dependencies, shaded with their depending projects and finally assembled to a uber jar. For example, `gearpump-core-$version.jar` will now contain both the gearpump sources and shaded libraries, whose package names are both `org.apache.gearpump`. The original dependencies are excluded from `pack`. 3. package names in the codebase are changed as needed by 2 4. `gearpump-core` is now `provided` for `gearpump-streaming` and won't be transitive dependencies for projects depending on`gearpump-streaming`. `gearpump-core` needs to be explicitly included as `provided` dependency so I add it to the published pom files for users. Author: manuzhang <[email protected]> Closes #108 from manuzhang/fix_build. Project: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/commit/0b56de39 Tree: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/tree/0b56de39 Diff: http://git-wip-us.apache.org/repos/asf/incubator-gearpump/diff/0b56de39 Branch: refs/heads/master Commit: 0b56de39919452787b2533ac3d10ac1dd46b2f9d Parents: cbf59fb Author: manuzhang <[email protected]> Authored: Fri Nov 11 13:10:51 2016 +0800 Committer: huafengw <[email protected]> Committed: Fri Nov 11 13:10:51 2016 +0800 ---------------------------------------------------------------------- .travis.yml | 6 +- .../gearpump/transport/netty/MessageBatch.java | 2 +- .../apache/gearpump/cluster/UserConfig.scala | 2 +- .../apache/gearpump/metrics/AkkaReporter.scala | 2 +- .../org/apache/gearpump/metrics/Counter.scala | 4 +- .../org/apache/gearpump/metrics/Histogram.scala | 4 +- .../apache/gearpump/metrics/JvmMetricsSet.scala | 4 +- .../org/apache/gearpump/metrics/Meter.scala | 2 +- .../org/apache/gearpump/metrics/Metrics.scala | 2 +- .../metrics/MetricsReporterService.scala | 7 +- .../serializer/FastKryoSerializer.scala | 11 +- .../serializer/GearpumpSerialization.scala | 3 +- .../org/apache/gearpump/util/FileUtils.scala | 2 +- .../scala/org/apache/gearpump/util/Util.scala | 10 +- .../gearpump/jarstore/FileServerSpec.scala | 7 +- .../apache/gearpump/metrics/MetricsSpec.scala | 3 +- .../gearpump/serializer/SerializerSpec.scala | 21 +- .../apache/gearpump/util/FileUtilsSpec.scala | 4 +- .../gearpump/cluster/utils/SystemOperation.java | 2 +- .../cluster/worker/CGroupProcessLauncher.scala | 2 +- .../apache/gearpump/redis/RedisMessage.scala | 10 +- project/Build.scala | 559 ------------------- project/BuildDashboard.scala | 119 ++++ project/BuildExample.scala | 236 -------- project/BuildExamples.scala | 181 ++++++ project/BuildExperiments.scala | 118 ++++ project/BuildExternals.scala | 124 ++++ project/BuildGearpump.scala | 252 +++++++++ project/BuildIntegrationTest.scala | 93 --- project/BuildIntegrationTests.scala | 93 +++ project/BuildShaded.scala | 142 ----- project/Dependencies.scala | 102 ++++ project/Docs.scala | 61 ++ project/Pack.scala | 21 +- project/build.properties | 2 +- project/plugins.sbt | 2 +- .../streaming/appmaster/ClockService.scala | 2 +- .../dsl/window/impl/WindowRunner.scala | 8 +- .../streaming/metrics/ProcessorAggregator.scala | 3 +- .../streaming/task/SerializerResolver.scala | 2 +- .../gearpump/streaming/task/Subscription.scala | 2 +- .../gearpump/streaming/task/TaskActor.scala | 2 +- 42 files changed, 1135 insertions(+), 1099 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/.travis.yml ---------------------------------------------------------------------- diff --git a/.travis.yml b/.travis.yml index e7e8abd..7151f88 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,10 +3,8 @@ language: - scala sudo: false before_script: -- rm -rf $HOME/.m2 -- rm -rf $HOME/.ivy2 -- mkdir -p $HOME/.sbt/launchers/0.13.11/ -- curl -L -o $HOME/.sbt/launchers/0.13.11/sbt-launch.jar http://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.11/sbt-launch.jar +- mkdir -p $HOME/.sbt/launchers/0.13.13/ +- curl -L -o $HOME/.sbt/launchers/0.13.13/sbt-launch.jar http://dl.bintray.com/typesafe/ivy-releases/org.scala-sbt/sbt-launch/0.13.13/sbt-launch.jar script: - echo "TRAVIS_PULL_REQUEST" $TRAVIS_PULL_REQUEST - echo "TRAVIS_BRANCH" $TRAVIS_BRANCH http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/java/org/apache/gearpump/transport/netty/MessageBatch.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/gearpump/transport/netty/MessageBatch.java b/core/src/main/java/org/apache/gearpump/transport/netty/MessageBatch.java index d9de871..13ce9fa 100644 --- a/core/src/main/java/org/apache/gearpump/transport/netty/MessageBatch.java +++ b/core/src/main/java/org/apache/gearpump/transport/netty/MessageBatch.java @@ -18,7 +18,7 @@ package org.apache.gearpump.transport.netty; -import org.apache.gearpump.google.common.io.Closeables; +import com.google.common.io.Closeables; import org.jboss.netty.buffer.ChannelBuffer; import org.jboss.netty.buffer.ChannelBufferOutputStream; import org.jboss.netty.buffer.ChannelBuffers; http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/cluster/UserConfig.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/cluster/UserConfig.scala b/core/src/main/scala/org/apache/gearpump/cluster/UserConfig.scala index 3f42808..1946cfb 100644 --- a/core/src/main/scala/org/apache/gearpump/cluster/UserConfig.scala +++ b/core/src/main/scala/org/apache/gearpump/cluster/UserConfig.scala @@ -20,8 +20,8 @@ package org.apache.gearpump.cluster import akka.actor.{ActorSystem, ExtendedActorSystem} import akka.serialization.JavaSerializer +import com.google.common.io.BaseEncoding -import org.apache.gearpump.google.common.io.BaseEncoding /** * Immutable configuration http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/AkkaReporter.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/AkkaReporter.scala b/core/src/main/scala/org/apache/gearpump/metrics/AkkaReporter.scala index acd9493..9092beb 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/AkkaReporter.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/AkkaReporter.scala @@ -22,7 +22,7 @@ import scala.collection.JavaConverters._ import akka.actor.{ActorRef, ActorSystem} -import org.apache.gearpump.codahale.metrics.{Gauge => CodaGauge, MetricRegistry} +import com.codahale.metrics.{Gauge => CodaGauge, MetricRegistry} import org.apache.gearpump.metrics.Metrics.{Counter => CounterData, Gauge => GaugeData, Histogram => HistogramData, Meter => MeterData} import org.apache.gearpump.metrics.MetricsReporterService.ReportTo import org.apache.gearpump.util.LogUtil http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/Counter.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/Counter.scala b/core/src/main/scala/org/apache/gearpump/metrics/Counter.scala index 2a4a195..e778e3d 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/Counter.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/Counter.scala @@ -18,10 +18,10 @@ package org.apache.gearpump.metrics -import org.apache.gearpump.codahale.metrics.{Counter => CodaHaleCounter} +import com.codahale.metrics.{Counter => CodaHaleCounter} /** - * @see org.apache.gearpump.codahale.metrics.Counter + * @see com.codahale.metrics.Counter */ class Counter(val name: String, counter: CodaHaleCounter, sampleRate: Int = 1) { private var sampleCount = 0L http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/Histogram.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/Histogram.scala b/core/src/main/scala/org/apache/gearpump/metrics/Histogram.scala index 9d1e500..3483c1e 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/Histogram.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/Histogram.scala @@ -18,10 +18,10 @@ package org.apache.gearpump.metrics -import org.apache.gearpump.codahale.metrics.{Histogram => CodaHaleHistogram} +import com.codahale.metrics.{Histogram => CodaHaleHistogram} /** - * @see org.apache.gearpump.codahale.metrics.Histogram + * @see com.codahale.metrics.Histogram */ class Histogram(val name: String, histogram: CodaHaleHistogram, sampleRate: Int = 1) { private var sampleCount = 0L http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/JvmMetricsSet.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/JvmMetricsSet.scala b/core/src/main/scala/org/apache/gearpump/metrics/JvmMetricsSet.scala index 436d14f..56b4743 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/JvmMetricsSet.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/JvmMetricsSet.scala @@ -21,8 +21,8 @@ package org.apache.gearpump.metrics import java.util import scala.collection.JavaConverters._ -import org.apache.gearpump.codahale.metrics.jvm.{MemoryUsageGaugeSet, ThreadStatesGaugeSet} -import org.apache.gearpump.codahale.metrics.{Metric, MetricSet} +import com.codahale.metrics.jvm.{MemoryUsageGaugeSet, ThreadStatesGaugeSet} +import com.codahale.metrics.{Metric, MetricSet} class JvmMetricsSet(name: String) extends MetricSet { http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/Meter.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/Meter.scala b/core/src/main/scala/org/apache/gearpump/metrics/Meter.scala index d4b7871..55aa73f 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/Meter.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/Meter.scala @@ -18,7 +18,7 @@ package org.apache.gearpump.metrics -import org.apache.gearpump.codahale.metrics.{Meter => CodaHaleMeter} +import com.codahale.metrics.{Meter => CodaHaleMeter} /** See org.apache.gearpump.codahale.metrics.Meter */ class Meter(val name: String, meter: CodaHaleMeter, sampleRate: Int = 1) { http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/Metrics.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/Metrics.scala b/core/src/main/scala/org/apache/gearpump/metrics/Metrics.scala index 1ee3798..3737361 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/Metrics.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/Metrics.scala @@ -23,7 +23,7 @@ import scala.collection.JavaConverters._ import akka.actor._ import org.slf4j.Logger -import org.apache.gearpump.codahale.metrics._ +import com.codahale.metrics._ import org.apache.gearpump.metrics import org.apache.gearpump.util.LogUtil http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/metrics/MetricsReporterService.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/metrics/MetricsReporterService.scala b/core/src/main/scala/org/apache/gearpump/metrics/MetricsReporterService.scala index 94aa114..620dc61 100644 --- a/core/src/main/scala/org/apache/gearpump/metrics/MetricsReporterService.scala +++ b/core/src/main/scala/org/apache/gearpump/metrics/MetricsReporterService.scala @@ -20,12 +20,11 @@ package org.apache.gearpump.metrics import java.net.InetSocketAddress import java.util.concurrent.TimeUnit -import scala.concurrent.duration._ +import scala.concurrent.duration._ import akka.actor.{Actor, ActorRef} - -import org.apache.gearpump.codahale.metrics.graphite.{Graphite, GraphiteReporter} -import org.apache.gearpump.codahale.metrics.{MetricFilter, Slf4jReporter} +import com.codahale.metrics.{MetricFilter, Slf4jReporter} +import com.codahale.metrics.graphite.{Graphite, GraphiteReporter} import org.apache.gearpump.metrics.Metrics.{DemandMoreMetrics, ReportMetrics} import org.apache.gearpump.metrics.MetricsReporterService.ReportTo import org.apache.gearpump.util.Constants._ http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/serializer/FastKryoSerializer.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/serializer/FastKryoSerializer.scala b/core/src/main/scala/org/apache/gearpump/serializer/FastKryoSerializer.scala index f258c0f..cb3d2fd 100644 --- a/core/src/main/scala/org/apache/gearpump/serializer/FastKryoSerializer.scala +++ b/core/src/main/scala/org/apache/gearpump/serializer/FastKryoSerializer.scala @@ -19,19 +19,18 @@ package org.apache.gearpump.serializer import akka.actor.ExtendedActorSystem - -import org.apache.gearpump.esotericsoftware.kryo.Kryo.DefaultInstantiatorStrategy -import org.apache.gearpump.objenesis.strategy.StdInstantiatorStrategy -import org.apache.gearpump.romix.serialization.kryo.KryoSerializerWrapper +import com.esotericsoftware.kryo.Kryo.DefaultInstantiatorStrategy +import com.romix.akka.serialization.kryo.{KryoBasedSerializer, KryoSerializer} import org.apache.gearpump.serializer.FastKryoSerializer.KryoSerializationException import org.apache.gearpump.util.LogUtil +import org.objenesis.strategy.StdInstantiatorStrategy class FastKryoSerializer(system: ExtendedActorSystem) extends Serializer { private val LOG = LogUtil.getLogger(getClass) private val config = system.settings.config - private val kryoSerializer = new KryoSerializerWrapper(system) + private val kryoSerializer: KryoBasedSerializer = new KryoSerializer(system).serializer private val kryo = kryoSerializer.kryo val strategy = new DefaultInstantiatorStrategy strategy.setFallbackInstantiatorStrategy(new StdInstantiatorStrategy) @@ -40,7 +39,7 @@ class FastKryoSerializer(system: ExtendedActorSystem) extends Serializer { override def serialize(message: Any): Array[Byte] = { try { - kryoSerializer.toBinary(message) + kryoSerializer.toBinary(message.asInstanceOf[AnyRef]) } catch { case ex: java.lang.IllegalArgumentException => val clazz = message.getClass http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/serializer/GearpumpSerialization.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/serializer/GearpumpSerialization.scala b/core/src/main/scala/org/apache/gearpump/serializer/GearpumpSerialization.scala index 524089d..45a5481 100644 --- a/core/src/main/scala/org/apache/gearpump/serializer/GearpumpSerialization.scala +++ b/core/src/main/scala/org/apache/gearpump/serializer/GearpumpSerialization.scala @@ -18,10 +18,9 @@ package org.apache.gearpump.serializer +import com.esotericsoftware.kryo.{Kryo, Serializer => KryoSerializer} import com.typesafe.config.Config import org.slf4j.Logger - -import org.apache.gearpump.esotericsoftware.kryo.{Kryo, Serializer => KryoSerializer} import org.apache.gearpump.util.{Constants, LogUtil} class GearpumpSerialization(config: Config) { http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/util/FileUtils.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/util/FileUtils.scala b/core/src/main/scala/org/apache/gearpump/util/FileUtils.scala index e3df37b..283a64a 100644 --- a/core/src/main/scala/org/apache/gearpump/util/FileUtils.scala +++ b/core/src/main/scala/org/apache/gearpump/util/FileUtils.scala @@ -21,7 +21,7 @@ package org.apache.gearpump.util import java.io.{File, IOException} import java.nio.charset.Charset -import org.apache.gearpump.google.common.io.Files +import com.google.common.io.Files object FileUtils { private val UTF8 = Charset.forName("UTF-8") http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/main/scala/org/apache/gearpump/util/Util.scala ---------------------------------------------------------------------- diff --git a/core/src/main/scala/org/apache/gearpump/util/Util.scala b/core/src/main/scala/org/apache/gearpump/util/Util.scala index 0faa46a..8ee0e26 100644 --- a/core/src/main/scala/org/apache/gearpump/util/Util.scala +++ b/core/src/main/scala/org/apache/gearpump/util/Util.scala @@ -66,8 +66,14 @@ object Util { def startProcess(options: Array[String], classPath: Array[String], mainClass: String, arguments: Array[String]): RichProcess = { val java = System.getProperty("java.home") + "/bin/java" - val command = List(java) ++ options ++ - List("-cp", classPath.mkString(File.pathSeparator), mainClass) ++ arguments + + val command = List(java) ++ + // java.lang.VerifyError will be caused without "-noverify" + // TODO: investigate the cause and remove this + Array("-noverify") ++ + options ++ + List("-cp", classPath.mkString(File.pathSeparator), mainClass) ++ + arguments LOG.info(s"Starting executor process java $mainClass ${arguments.mkString(" ")} " + s"\n ${options.mkString(" ")}") val logger = new ProcessLogRedirector() http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/test/scala/org/apache/gearpump/jarstore/FileServerSpec.scala ---------------------------------------------------------------------- diff --git a/core/src/test/scala/org/apache/gearpump/jarstore/FileServerSpec.scala b/core/src/test/scala/org/apache/gearpump/jarstore/FileServerSpec.scala index c99a031..39b6261 100644 --- a/core/src/test/scala/org/apache/gearpump/jarstore/FileServerSpec.scala +++ b/core/src/test/scala/org/apache/gearpump/jarstore/FileServerSpec.scala @@ -22,9 +22,9 @@ import java.io.File import java.util.concurrent.TimeUnit import akka.actor.ActorSystem -import com.typesafe.config.{ConfigValueFactory, ConfigValue} +import com.google.common.io.Files +import com.typesafe.config.ConfigValueFactory import org.apache.gearpump.cluster.TestUtil -import org.apache.gearpump.google.common.io.Files import org.apache.gearpump.jarstore.local.LocalJarStore import org.apache.gearpump.util.{FileUtils, LogUtil} import org.scalatest.{BeforeAndAfterAll, Matchers, WordSpecLike} @@ -39,7 +39,7 @@ class FileServerSpec extends WordSpecLike with Matchers with BeforeAndAfterAll { val host = "localhost" private val LOG = LogUtil.getLogger(getClass) - var system: ActorSystem = null + var system: ActorSystem = _ override def afterAll { if (null != system) { @@ -75,7 +75,6 @@ class FileServerSpec extends WordSpecLike with Matchers with BeforeAndAfterAll { "The file server" should { "serve the data previously stored" in { - val rootDir = Files.createTempDir() val localJarStore: JarStore = new LocalJarStore val conf = TestUtil.DEFAULT_CONFIG.withValue("gearpump.jarstore.rootpath", http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/test/scala/org/apache/gearpump/metrics/MetricsSpec.scala ---------------------------------------------------------------------- diff --git a/core/src/test/scala/org/apache/gearpump/metrics/MetricsSpec.scala b/core/src/test/scala/org/apache/gearpump/metrics/MetricsSpec.scala index 5881640..0855553 100644 --- a/core/src/test/scala/org/apache/gearpump/metrics/MetricsSpec.scala +++ b/core/src/test/scala/org/apache/gearpump/metrics/MetricsSpec.scala @@ -18,12 +18,13 @@ package org.apache.gearpump.metrics +import com.codahale.metrics.{Counter => CodaHaleCounter, Histogram => CodaHaleHistogram, Meter => CodaHaleMeter} + import org.mockito.Matchers._ import org.mockito.Mockito._ import org.scalatest.mock.MockitoSugar import org.scalatest.{FlatSpec, Matchers} -import org.apache.gearpump.codahale.metrics.{Counter => CodaHaleCounter, Histogram => CodaHaleHistogram, Meter => CodaHaleMeter} class MetricsSpec extends FlatSpec with Matchers with MockitoSugar { http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/test/scala/org/apache/gearpump/serializer/SerializerSpec.scala ---------------------------------------------------------------------- diff --git a/core/src/test/scala/org/apache/gearpump/serializer/SerializerSpec.scala b/core/src/test/scala/org/apache/gearpump/serializer/SerializerSpec.scala index f4bd114..0772a5e 100644 --- a/core/src/test/scala/org/apache/gearpump/serializer/SerializerSpec.scala +++ b/core/src/test/scala/org/apache/gearpump/serializer/SerializerSpec.scala @@ -18,20 +18,23 @@ package org.apache.gearpump.serializer -import scala.collection.JavaConverters._ -import scala.concurrent.Await -import scala.concurrent.duration.Duration - import akka.actor.{ActorSystem, ExtendedActorSystem} + +import com.esotericsoftware.kryo.io.{Input, Output} +import com.esotericsoftware.kryo.{Kryo, Serializer => KryoSerializer} import com.typesafe.config.{ConfigFactory, ConfigValueFactory} -import org.scalatest.mock.MockitoSugar -import org.scalatest.{FlatSpec, Matchers} import org.apache.gearpump.cluster.TestUtil -import org.apache.gearpump.esotericsoftware.kryo.io.{Input, Output} -import org.apache.gearpump.esotericsoftware.kryo.{Kryo, Serializer => KryoSerializer} import org.apache.gearpump.serializer.SerializerSpec._ +import org.scalatest.mock.MockitoSugar +import org.scalatest.{FlatSpec, Matchers} + +import scala.collection.JavaConverters._ +import scala.concurrent.Await +import scala.concurrent.duration.Duration + + class SerializerSpec extends FlatSpec with Matchers with MockitoSugar { val config = ConfigFactory.empty.withValue("gearpump.serializers", ConfigValueFactory.fromAnyRef(Map(classOf[ClassA].getName -> classOf[ClassASerializer].getName, @@ -70,7 +73,7 @@ object SerializerSpec { class ClassASerializer extends KryoSerializer[ClassA] { override def write(kryo: Kryo, output: Output, `object`: ClassA): Unit = { - output.writeString(classOf[ClassA].getName.toString) + output.writeString(classOf[ClassA].getName) } override def read(kryo: Kryo, input: Input, `type`: Class[ClassA]): ClassA = { http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/core/src/test/scala/org/apache/gearpump/util/FileUtilsSpec.scala ---------------------------------------------------------------------- diff --git a/core/src/test/scala/org/apache/gearpump/util/FileUtilsSpec.scala b/core/src/test/scala/org/apache/gearpump/util/FileUtilsSpec.scala index 66abc36..97b35ad 100644 --- a/core/src/test/scala/org/apache/gearpump/util/FileUtilsSpec.scala +++ b/core/src/test/scala/org/apache/gearpump/util/FileUtilsSpec.scala @@ -18,13 +18,13 @@ package org.apache.gearpump.util +import com.google.common.io.Files + import java.io.File import java.util import org.scalatest.FlatSpec -import org.apache.gearpump.google.common.io.Files - class FileUtilsSpec extends FlatSpec { val TXT = """ http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/experiments/cgroup/src/main/java/org/apache/gearpump/cluster/utils/SystemOperation.java ---------------------------------------------------------------------- diff --git a/experiments/cgroup/src/main/java/org/apache/gearpump/cluster/utils/SystemOperation.java b/experiments/cgroup/src/main/java/org/apache/gearpump/cluster/utils/SystemOperation.java index 4983dde..f52afc7 100644 --- a/experiments/cgroup/src/main/java/org/apache/gearpump/cluster/utils/SystemOperation.java +++ b/experiments/cgroup/src/main/java/org/apache/gearpump/cluster/utils/SystemOperation.java @@ -17,7 +17,7 @@ */ package org.apache.gearpump.cluster.utils; -import org.apache.gearpump.google.common.io.CharStreams; +import com.google.common.io.CharStreams; import org.slf4j.Logger; import org.slf4j.LoggerFactory; http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/experiments/cgroup/src/main/scala/org/apache/gearpump/cluster/worker/CGroupProcessLauncher.scala ---------------------------------------------------------------------- diff --git a/experiments/cgroup/src/main/scala/org/apache/gearpump/cluster/worker/CGroupProcessLauncher.scala b/experiments/cgroup/src/main/scala/org/apache/gearpump/cluster/worker/CGroupProcessLauncher.scala index 74a4047..bf291cf 100644 --- a/experiments/cgroup/src/main/scala/org/apache/gearpump/cluster/worker/CGroupProcessLauncher.scala +++ b/experiments/cgroup/src/main/scala/org/apache/gearpump/cluster/worker/CGroupProcessLauncher.scala @@ -43,7 +43,7 @@ class CGroupProcessLauncher(val config: Config) extends ExecutorProcessLauncher } override def createProcess( - appId: Int, executorId: Int, resource: Resource, appConfig: Config, options: Array[String], + appId: Int, executorId: Int, resource: Resource, appConfig: Config, options: Array[String], classPath: Array[String], mainClass: String, arguments: Array[String]): RichProcess = { val cgroupCommand = if (executorId != APP_MASTER) { cgroupManager.map(_.startNewExecutor(appConfig, resource.slots, appId, http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/experiments/redis/src/main/scala/org/apache/gearpump/redis/RedisMessage.scala ---------------------------------------------------------------------- diff --git a/experiments/redis/src/main/scala/org/apache/gearpump/redis/RedisMessage.scala b/experiments/redis/src/main/scala/org/apache/gearpump/redis/RedisMessage.scala index 2988f5b..ea738d6 100644 --- a/experiments/redis/src/main/scala/org/apache/gearpump/redis/RedisMessage.scala +++ b/experiments/redis/src/main/scala/org/apache/gearpump/redis/RedisMessage.scala @@ -147,7 +147,7 @@ object RedisMessage { */ case class LPUSH(key: Array[Byte], value: Array[Byte]) { def this(key: String, value: String) = { - this(key, toBytes(value)) + this(toBytes(key), toBytes(value)) } } @@ -184,7 +184,7 @@ object RedisMessage { */ case class RPUSH(key: Array[Byte], value: Array[Byte]) { def this(key: String, value: String) = { - this(key, toBytes(value)) + this(toBytes(key), toBytes(value)) } } @@ -338,7 +338,7 @@ object RedisMessage { */ case class SADD(key: Array[Byte], members: Array[Byte]) { def this(key: String, members: String) = { - this(key, toBytes(members)) + this(toBytes(key), toBytes(members)) } } @@ -365,7 +365,7 @@ object RedisMessage { */ case class SREM(key: Array[Byte], member: Array[Byte]) { def this(key: String, member: String) = { - this(key, toBytes(member)) + this(toBytes(key), toBytes(member)) } } @@ -438,7 +438,7 @@ object RedisMessage { * @param increment */ case class INCRBYFLOAT(key: Array[Byte], increment: Double) { - def this(key: String, increment: Number) = { + def this(key: String, increment: Double) = { this(toBytes(key), increment) } } http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/project/Build.scala ---------------------------------------------------------------------- diff --git a/project/Build.scala b/project/Build.scala deleted file mode 100644 index 40b5743..0000000 --- a/project/Build.scala +++ /dev/null @@ -1,559 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import com.typesafe.sbt.SbtPgp.autoImport._ -import BuildExample.examples -import BuildIntegrationTest.integration_test -import BuildShaded._ -import de.johoop.jacoco4sbt.JacocoPlugin.jacoco -import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._ -import sbt.Keys._ -import sbt._ -import Pack.packProject -import org.scalajs.sbtplugin.cross.CrossProject -import sbtassembly.AssemblyPlugin.autoImport._ -import sbtunidoc.Plugin.UnidocKeys._ -import sbtunidoc.Plugin._ -import xerial.sbt.Sonatype._ - -object Build extends sbt.Build { - - val copySharedSourceFiles = TaskKey[Unit]("copied shared services source code") - - val akkaVersion = "2.4.3" - val apacheRepo = "https://repository.apache.org/" - val hadoopVersion = "2.6.0" - val hbaseVersion = "1.0.0" - val commonsHttpVersion = "3.1" - val commonsLoggingVersion = "1.1.3" - val commonsLangVersion = "2.6" - val commonsIOVersion = "2.4" - val dataReplicationVersion = "0.7" - val upickleVersion = "0.3.4" - val junitVersion = "4.12" - val kafkaVersion = "0.8.2.1" - val stormVersion = "0.10.0" - val slf4jVersion = "1.7.7" - - val crossScalaVersionNumbers = Seq("2.11.8") - val scalaVersionNumber = crossScalaVersionNumbers.last - val sprayVersion = "1.3.2" - val sprayJsonVersion = "1.3.1" - val scalaTestVersion = "2.2.0" - val scalaCheckVersion = "1.11.3" - val mockitoVersion = "1.10.17" - val bijectionVersion = "0.8.0" - val scalazVersion = "7.1.1" - val algebirdVersion = "0.9.0" - val chillVersion = "0.6.0" - val distDirectory = "output" - val projectName = "gearpump" - - override def projects: Seq[Project] = (super.projects.toList ++ BuildExample.projects.toList - ++ Pack.projects.toList).toSeq - - val commonSettings = Seq(jacoco.settings: _*) ++ sonatypeSettings ++ - Seq( - resolvers ++= Seq( - "patriknw at bintray" at "http://dl.bintray.com/patriknw/maven", - "apache-repo" at "https://repository.apache.org/content/repositories", - "maven1-repo" at "http://repo1.maven.org/maven2", - "maven2-repo" at "http://mvnrepository.com/artifact", - "sonatype" at "https://oss.sonatype.org/content/repositories/releases", - "bintray/non" at "http://dl.bintray.com/non/maven", - "clockfly" at "http://dl.bintray.com/clockfly/maven", - "clojars" at "http://clojars.org/repo" - ) - // ,addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0-M5" cross CrossVersion.full) - ) ++ - Seq( - scalaVersion := scalaVersionNumber, - crossScalaVersions := crossScalaVersionNumbers, - organization := "org.apache.gearpump", - useGpg := false, - pgpSecretRing := file("./secring.asc"), - pgpPublicRing := file("./pubring.asc"), - scalacOptions ++= Seq("-Yclosure-elim", "-Yinline"), - publishMavenStyle := true, - - pgpPassphrase := Option(System.getenv().get("PASSPHRASE")).map(_.toArray), - credentials += Credentials( - "Sonatype Nexus Repository Manager", - "repository.apache.org", - System.getenv().get("SONATYPE_USERNAME"), - System.getenv().get("SONATYPE_PASSWORD")), - - pomIncludeRepository := { _ => false }, - - publishTo := { - if (isSnapshot.value) { - Some("snapshots" at apacheRepo + "content/repositories/snapshots") - } else { - Some("releases" at apacheRepo + "content/repositories/releases") - } - }, - - publishArtifact in Test := true, - - pomExtra := { - <url>https://github.com/apache/incubator-gearpump</url> - <licenses> - <license> - <name>Apache 2</name> - <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url> - </license> - </licenses> - <scm> - <connection>scm:git://git.apache.org/incubator-gearpump.git</connection> - <developerConnection>scm:git:[email protected]:apache/incubator-gearpump</developerConnection> - <url>github.com/apache/incubator-gearpump</url> - </scm> - <developers> - <developer> - <id>gearpump</id> - <name>Gearpump Team</name> - <url>http://gearpump.incubator.apache.org/community.html#who-we-are</url> - </developer> - </developers> - } - ) - - val noPublish = Seq( - publish := {}, - publishLocal := {}, - publishArtifact := false, - publishArtifact in Test := false - ) - - val coreDependencies = Seq( - libraryDependencies ++= Seq( - "org.slf4j" % "slf4j-api" % slf4jVersion, - "org.slf4j" % "slf4j-log4j12" % slf4jVersion, - "commons-lang" % "commons-lang" % commonsLangVersion, - "com.google.code.findbugs" % "jsr305" % "1.3.9" % "compile", - - /** - * Overrides Netty version 3.10.3.Final used by Akka 2.4.2 to work-around netty hang issue - * (https://github.com/gearpump/gearpump/issues/2020) - * - * Akka 2.4.2 by default use Netty 3.10.3.Final, which has a serious issue which can hang - * the network. The same issue also happens in version range (3.10.0.Final, 3.10.5.Final) - * Netty 3.10.6.Final have this issue fixed, however, we find there is a 20% performance - * drop. So we decided to downgrade netty to 3.8.0.Final (Same version used in akka 2.3.12). - * - * @see https://github.com/gearpump/gearpump/pull/2017 for more discussions. - */ - "io.netty" % "netty" % "3.8.0.Final", - "com.typesafe.akka" %% "akka-remote" % akkaVersion - exclude("io.netty", "netty"), - - "com.typesafe.akka" %% "akka-cluster" % akkaVersion, - "com.typesafe.akka" %% "akka-cluster-tools" % akkaVersion, - "commons-logging" % "commons-logging" % commonsLoggingVersion, - "com.typesafe.akka" %% "akka-distributed-data-experimental" % akkaVersion, - "com.typesafe.akka" %% "akka-actor" % akkaVersion, - "com.typesafe.akka" %% "akka-agent" % akkaVersion, - "com.typesafe.akka" %% "akka-slf4j" % akkaVersion, - "com.typesafe.akka" %% "akka-kernel" % akkaVersion, - "com.typesafe.akka" %% "akka-http-experimental" % akkaVersion, - "com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaVersion, - "org.scala-lang" % "scala-reflect" % scalaVersionNumber, - "org.scala-lang.modules" %% "scala-parser-combinators" % "1.0.4", - "com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test", - "org.scalatest" %% "scalatest" % scalaTestVersion % "test", - "org.scalacheck" %% "scalacheck" % scalaCheckVersion % "test", - "org.mockito" % "mockito-core" % mockitoVersion % "test", - "junit" % "junit" % junitVersion % "test" - ), - - unmanagedJars in Compile ++= Seq( - getShadedJarFile(shaded_metrics_graphite.id, version.value), - getShadedJarFile(shaded_guava.id, version.value), - getShadedJarFile(shaded_akka_kryo.id, version.value) - ) - ) - - lazy val javadocSettings = Seq( - addCompilerPlugin("com.typesafe.genjavadoc" %% "genjavadoc-plugin" % - "0.9" cross CrossVersion.full), - scalacOptions += s"-P:genjavadoc:out=${target.value}/java" - ) - - val myAssemblySettings = Seq( - test in assembly := {}, - assemblyOption in assembly ~= { - _.copy(includeScala = false) - }, - assemblyJarName in assembly := { - s"${name.value.split("-").last}-${scalaBinaryVersion.value}-${version.value}-assembly.jar" - } - ) - - val projectsWithDoc = inProjects( - core, - streaming, - external_kafka, - external_monoid, - external_serializer, - external_hbase, - external_hadoopfs) - - lazy val gearpumpUnidocSetting = scalaJavaUnidocSettings ++ Seq( - unidocProjectFilter in(ScalaUnidoc, unidoc) := projectsWithDoc, - unidocProjectFilter in(JavaUnidoc, unidoc) := projectsWithDoc, - - unidocAllSources in(ScalaUnidoc, unidoc) := { - ignoreUndocumentedPackages((unidocAllSources in(ScalaUnidoc, unidoc)).value) - }, - - // Skip class names containing $ and some internal packages in Javadocs - unidocAllSources in(JavaUnidoc, unidoc) := { - ignoreUndocumentedPackages((unidocAllSources in(JavaUnidoc, unidoc)).value) - } - ) - - private def ignoreUndocumentedPackages(packages: Seq[Seq[File]]): Seq[Seq[File]] = { - packages - .map(_.filterNot(_.getName.contains("$"))) - .map(_.filterNot(_.getCanonicalPath.contains("akka"))) - } - - private def addShadedDeps(deps: Seq[xml.Node], node: xml.Node): xml.Node = { - node match { - case elem: xml.Elem => - val child = if (elem.label == "dependencies") { - elem.child ++ deps - } else { - elem.child.map(addShadedDeps(deps, _)) - } - xml.Elem(elem.prefix, elem.label, elem.attributes, elem.scope, false, child: _*) - case _ => - node - } - } - - lazy val root = Project( - id = "gearpump", - base = file("."), - settings = commonSettings ++ noPublish ++ gearpumpUnidocSetting) - .aggregate(shaded, core, streaming, services, external_kafka, external_monoid, - external_serializer, examples, storm, yarn, external_hbase, gearpumpHadoop, packProject, - external_hadoopfs, integration_test).settings(Defaults.itSettings: _*) - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val core = Project( - id = "gearpump-core", - base = file("core"), - settings = commonSettings ++ javadocSettings ++ coreDependencies ++ Seq( - pomPostProcess := { - (node: xml.Node) => addShadedDeps(List( - getShadedDepXML(organization.value, shaded_akka_kryo.id, version.value), - getShadedDepXML(organization.value, shaded_guava.id, version.value), - getShadedDepXML(organization.value, shaded_metrics_graphite.id, version.value)), node) - } - )).disablePlugins(sbtassembly.AssemblyPlugin) - - - lazy val cgroup = Project( - id = "gearpump-experimental-cgroup", - base = file("experiments/cgroup"), - settings = commonSettings ++ noPublish) - .dependsOn (core % "test->test; compile->compile") - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val streaming = Project( - id = "gearpump-streaming", - base = file("streaming"), - settings = commonSettings ++ javadocSettings ++ Seq( - unmanagedJars in Compile ++= Seq( - getShadedJarFile(shaded_gs_collections.id, version.value) - ), - - pomPostProcess := { - (node: xml.Node) => addShadedDeps(List( - getShadedDepXML(organization.value, shaded_gs_collections.id, version.value)), node) - } - )) - .dependsOn(core % "test->test; compile->compile", shaded_gs_collections) - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val external_kafka = Project( - id = "gearpump-external-kafka", - base = file("external/kafka"), - settings = commonSettings ++ javadocSettings ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.kafka" %% "kafka" % kafkaVersion, - "com.twitter" %% "bijection-core" % bijectionVersion, - ("org.apache.kafka" %% "kafka" % kafkaVersion classifier ("test")) % "test" - ) - )) - .dependsOn (streaming % "test->test; provided") - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val services_full = CrossProject("gearpump-services", file("services"), CrossType.Full). - settings( - publish := {}, - publishLocal := {} - ).disablePlugins(sbtassembly.AssemblyPlugin) - - val distDashboardDirectory = s"${distDirectory}/target/pack/dashboard/views/scalajs" - - // ScalaJs project need to be build seperately. - // sbt "project gearpump-servicesJS" compile - lazy val serviceJS: Project = services_full.js.settings(serviceJSSettings: _*) - - lazy val services: Project = services_full.jvm. - settings(serviceJvmSettings: _*) - .settings(compile in Compile <<= (compile in Compile)) - .dependsOn(streaming % "test->test;compile->compile") - - lazy val serviceJvmSettings = commonSettings ++ noPublish ++ Seq( - libraryDependencies ++= Seq( - "com.typesafe.akka" %% "akka-http-testkit" % akkaVersion % "test", - "org.scalatest" %% "scalatest" % scalaTestVersion % "test", - "com.lihaoyi" %% "upickle" % upickleVersion, - "com.softwaremill.akka-http-session" %% "core" % "0.2.5", - "com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaVersion, - "com.github.scribejava" % "scribejava-apis" % "2.4.0", - "com.ning" % "async-http-client" % "1.9.33", - "org.webjars" % "angularjs" % "1.4.9", - - // angular 1.5 breaks ui-select, but we need ng-touch 1.5 - "org.webjars.npm" % "angular-touch" % "1.5.0", - "org.webjars" % "angular-ui-router" % "0.2.15", - "org.webjars" % "bootstrap" % "3.3.6", - "org.webjars" % "d3js" % "3.5.6", - "org.webjars" % "momentjs" % "2.10.6", - "org.webjars" % "lodash" % "3.10.1", - "org.webjars" % "font-awesome" % "4.5.0", - "org.webjars" % "jquery" % "2.2.0", - "org.webjars" % "jquery-cookie" % "1.4.1", - "org.webjars.bower" % "angular-loading-bar" % "0.8.0", - "org.webjars.bower" % "angular-smart-table" % "2.1.6", - "org.webjars.bower" % "angular-motion" % "0.4.3", - "org.webjars.bower" % "bootstrap-additions" % "0.3.1", - "org.webjars.bower" % "angular-strap" % "2.3.5", - "org.webjars.npm" % "ui-select" % "0.14.2", - "org.webjars.bower" % "ng-file-upload" % "5.0.9", - "org.webjars.bower" % "vis" % "4.7.0", - "org.webjars.bower" % "clipboard.js" % "0.1.1", - "org.webjars.npm" % "dashing-deps" % "0.1.2", - "org.webjars.npm" % "dashing" % "0.4.8" - ).map(_.exclude("org.scalamacros", "quasiquotes_2.10")) - .map(_.exclude("org.scalamacros", "quasiquotes_2.10.3"))) - - lazy val serviceJSSettings = Seq( - scalaVersion := scalaVersionNumber, - crossScalaVersions := crossScalaVersionNumbers, - checksums := Seq(""), - requiresDOM := true, - libraryDependencies ++= Seq( - "com.lihaoyi" %%% "upickle" % upickleVersion, - "com.lihaoyi" %%% "utest" % "0.3.1" - ), - scalaJSStage in Global := FastOptStage, - testFrameworks += new TestFramework("utest.runner.Framework"), - requiresDOM := true, - persistLauncher in Compile := false, - persistLauncher in Test := false, - skip in packageJSDependencies := false, - scoverage.ScoverageSbtPlugin.ScoverageKeys.coverageExcludedPackages := - ".*gearpump\\.dashboard.*", - - copySharedSourceFiles := { - // scalastyle:off println - println(s"Copy shared source code to project services...") - // scalastyle:on println - }, - - artifactPath in fastOptJS in Compile := - new java.io.File(distDashboardDirectory, moduleName.value + "-fastopt.js"), - - fastOptJS in Compile <<= (fastOptJS in Compile).dependsOn(copySharedSourceFiles), - - relativeSourceMaps := true, - jsEnv in Test := new PhantomJS2Env(scalaJSPhantomJSClassLoader.value)) - - lazy val akkastream = Project( - id = "gearpump-experiments-akkastream", - base = file("experiments/akkastream"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - libraryDependencies ++= Seq( - "org.json4s" %% "json4s-jackson" % "3.2.11" - ), - mainClass in(Compile, packageBin) := Some("akka.stream.gearpump.example.Test") - )) - .dependsOn(streaming % "test->test; provided") - - lazy val redis = Project( - id = "gearpump-experiments-redis", - base = file("experiments/redis"), - settings = commonSettings ++ noPublish ++ - Seq( - libraryDependencies ++= Seq( - "redis.clients" % "jedis" % "2.9.0" - ) - ) - ).dependsOn(streaming % "test->test; provided") - - lazy val storm = Project( - id = "gearpump-experiments-storm", - base = file("experiments/storm"), - settings = commonSettings ++ noPublish ++ - Seq( - libraryDependencies ++= Seq( - "commons-io" % "commons-io" % commonsIOVersion, - "org.apache.storm" % "storm-core" % stormVersion - exclude("clj-stacktrace", "clj-stacktrace") - exclude("ch.qos.logback", "logback-classic") - exclude("ch.qos.logback", "logback-core") - exclude("clj-time", "clj-time") - exclude("clout", "clout") - exclude("compojure", "compojure") - exclude("hiccup", "hiccup") - exclude("jline", "jline") - exclude("joda-time", "joda-time") - exclude("org.clojure", "core.incubator") - exclude("org.clojure", "math.numeric-tower") - exclude("org.clojure", "tools.logging") - exclude("org.clojure", "tools.cli") - exclude("org.clojure", "tools.macro") - exclude("org.mortbay.jetty", "jetty-util") - exclude("org.mortbay.jetty", "jetty") - exclude("org.ow2.asm", "asm") - exclude("org.slf4j", "log4j-over-slf4j") - exclude("org.apache.logging.log4j", "log4j-slf4j-impl") - exclude("ring", "ring-core") - exclude("ring", "ring-devel") - exclude("ring", "ring-jetty-adapter") - exclude("ring", "ring-servlet") - ) - )) - .dependsOn (streaming % "test->test; compile->compile") - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val gearpumpHadoop = Project( - id = "gearpump-hadoop", - base = file("gearpump-hadoop"), - settings = commonSettings ++ noPublish ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion, - "org.apache.hadoop" % "hadoop-common" % hadoopVersion - ) - ) - ).dependsOn(core % "compile->compile").disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val yarn = Project( - id = "gearpump-experiments-yarn", - base = file("experiments/yarn"), - settings = commonSettings ++ noPublish ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.hadoop" % "hadoop-yarn-api" % hadoopVersion, - "org.apache.hadoop" % "hadoop-yarn-client" % hadoopVersion, - "org.apache.hadoop" % "hadoop-yarn-common" % hadoopVersion, - "commons-httpclient" % "commons-httpclient" % commonsHttpVersion, - "org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion, - "org.apache.hadoop" % "hadoop-yarn-server-resourcemanager" % hadoopVersion % "provided", - "org.apache.hadoop" % "hadoop-yarn-server-nodemanager" % hadoopVersion % "provided" - ) - )) - .dependsOn(services % "test->test;compile->compile", - core % "provided", gearpumpHadoop).disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val external_hbase = Project( - id = "gearpump-external-hbase", - base = file("external/hbase"), - settings = commonSettings ++ javadocSettings ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided", - "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion % "provided", - "org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion % "provided", - "org.codehaus.jackson" % "jackson-core-asl" % "1.9.13" % "provided", - "org.codehaus.jackson" % "jackson-mapper-asl" % "1.9.13" % "provided", - "org.apache.hbase" % "hbase-client" % hbaseVersion - exclude("com.github.stephenc.findbugs", "findbugs-annotations") - exclude("com.google.guava", "guava") - exclude("commons-codec", "commons-codec") - exclude("commons-io", "commons-io") - exclude("commons-lang", "commons-lang") - exclude("commons-logging", "commons-logging") - exclude("io.netty", "netty") - exclude("junit", "junit") - exclude("log4j", "log4j") - exclude("org.apache.zookeeper", "zookeeper") - exclude("org.codehaus.jackson", "jackson-mapper-asl"), - "org.apache.hbase" % "hbase-client" % hbaseVersion, - "org.apache.hbase" % "hbase-common" % hbaseVersion - exclude("com.github.stephenc.findbugs", "findbugs-annotations") - exclude("com.google.guava", "guava") - exclude("commons-codec", "commons-codec") - exclude("commons-collections", "commons-collections") - exclude("commons-io", "commons-io") - exclude("commons-lang", "commons-lang") - exclude("commons-logging", "commons-logging") - exclude("junit", "junit") - exclude("log4j", "log4j") - ) - )) - .dependsOn (streaming % "test->test; provided") - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val external_monoid = Project( - id = "gearpump-external-monoid", - base = file("external/monoid"), - settings = commonSettings ++ javadocSettings ++ - Seq( - libraryDependencies ++= Seq( - "com.twitter" %% "algebird-core" % algebirdVersion - ) - )) - .dependsOn (streaming % "provided") - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val external_serializer = Project( - id = "gearpump-external-serializer", - base = file("external/serializer"), - settings = commonSettings ++ javadocSettings ++ - Seq( - libraryDependencies ++= Seq( - "com.twitter" %% "chill-bijection" % chillVersion - exclude("com.esotericsoftware.kryo", "kyro") - exclude("com.esotericsoftware.minlog", "minlog") - ) - )) - .dependsOn (streaming % "provided") - .disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val external_hadoopfs = Project( - id = "gearpump-external-hadoopfs", - base = file("external/hadoopfs"), - settings = commonSettings ++ javadocSettings ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided", - "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion % "provided" - ) - )) - .dependsOn (streaming % "test->test; provided") - .disablePlugins(sbtassembly.AssemblyPlugin) -} http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/project/BuildDashboard.scala ---------------------------------------------------------------------- diff --git a/project/BuildDashboard.scala b/project/BuildDashboard.scala new file mode 100644 index 0000000..c14b9d6 --- /dev/null +++ b/project/BuildDashboard.scala @@ -0,0 +1,119 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import BuildGearpump._ +import Dependencies._ +import org.scalajs.sbtplugin.cross.{CrossProject, CrossType} +import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._ +import sbt._ +import sbt.Keys._ + +object BuildDashboard extends sbt.Build { + + lazy val services: Project = services_full.jvm + .settings(serviceJvmSettings: _*) + .dependsOn(core % "provided", streaming % "test->test; provided") + + // ScalaJs project need to be build separately. + // sbt "project gearpump-servicesJS" compile + private lazy val serviceJS: Project = services_full.js.settings(serviceJSSettings: _*) + + private lazy val services_full = CrossProject("gearpump-services", file("services"), + CrossType.Full) + .settings( + publish := {}, + publishLocal := {} + ).disablePlugins(sbtassembly.AssemblyPlugin) + + private val copySharedSourceFiles = TaskKey[Unit]("copied shared services source code") + + private val distDashboardDirectory = s"${distDirectory}/target/pack/dashboard/views/scalajs" + + private lazy val serviceJvmSettings = commonSettings ++ noPublish ++ Seq( + libraryDependencies ++= Seq( + "com.typesafe.akka" %% "akka-http-testkit" % akkaVersion % "test", + "org.scalatest" %% "scalatest" % scalaTestVersion % "test", + "com.lihaoyi" %% "upickle" % upickleVersion, + "com.softwaremill.akka-http-session" %% "core" % "0.2.5", + "com.typesafe.akka" %% "akka-http-spray-json-experimental" % akkaVersion, + "com.github.scribejava" % "scribejava-apis" % "2.4.0", + "com.ning" % "async-http-client" % "1.9.33", + "org.webjars" % "angularjs" % "1.4.9", + + // angular 1.5 breaks ui-select, but we need ng-touch 1.5 + "org.webjars.npm" % "angular-touch" % "1.5.0", + "org.webjars" % "angular-ui-router" % "0.2.15", + "org.webjars" % "bootstrap" % "3.3.6", + "org.webjars" % "d3js" % "3.5.6", + "org.webjars" % "momentjs" % "2.10.6", + "org.webjars" % "lodash" % "3.10.1", + "org.webjars" % "font-awesome" % "4.5.0", + "org.webjars" % "jquery" % "2.2.0", + "org.webjars" % "jquery-cookie" % "1.4.1", + "org.webjars.bower" % "angular-loading-bar" % "0.8.0" + exclude("org.webjars.bower", "angular"), + "org.webjars.bower" % "angular-smart-table" % "2.1.6" + exclude("org.webjars.bower", "angular"), + "org.webjars.bower" % "angular-motion" % "0.4.3", + "org.webjars.bower" % "bootstrap-additions" % "0.3.1", + "org.webjars.bower" % "angular-strap" % "2.3.5" + exclude("org.webjars.bower", "angular"), + "org.webjars.npm" % "ui-select" % "0.14.2", + "org.webjars.bower" % "ng-file-upload" % "5.0.9", + "org.webjars.bower" % "vis" % "4.7.0", + "org.webjars.bower" % "clipboard.js" % "0.1.1", + "org.webjars.npm" % "dashing-deps" % "0.1.2", + "org.webjars.npm" % "dashing" % "0.4.8" + ).map(_.exclude("org.scalamacros", "quasiquotes_2.10")) + .map(_.exclude("org.scalamacros", "quasiquotes_2.10.3"))) + + private lazy val serviceJSSettings = Seq( + scalaVersion := scalaVersionNumber, + crossScalaVersions := crossScalaVersionNumbers, + checksums := Seq(""), + requiresDOM := true, + libraryDependencies ++= Seq( + "com.lihaoyi" %%% "upickle" % upickleVersion, + "com.lihaoyi" %%% "utest" % "0.3.1" + ), + scalaJSStage in Global := FastOptStage, + testFrameworks += new TestFramework("utest.runner.Framework"), + requiresDOM := true, + persistLauncher in Compile := false, + persistLauncher in Test := false, + skip in packageJSDependencies := false, + scoverage.ScoverageSbtPlugin.ScoverageKeys.coverageExcludedPackages := + ".*gearpump\\.dashboard.*", + + copySharedSourceFiles := { + // scalastyle:off println + println(s"Copy shared source code to project services...") + // scalastyle:on println + }, + + artifactPath in fastOptJS in Compile := + new java.io.File(distDashboardDirectory, moduleName.value + "-fastopt.js"), + + fastOptJS in Compile := { + (fastOptJS in Compile).dependsOn(copySharedSourceFiles).value + }, + + relativeSourceMaps := true, + jsEnv in Test := new PhantomJS2Env(scalaJSPhantomJSClassLoader.value) + ) +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/project/BuildExample.scala ---------------------------------------------------------------------- diff --git a/project/BuildExample.scala b/project/BuildExample.scala deleted file mode 100644 index fadc1ec..0000000 --- a/project/BuildExample.scala +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import sbt.Keys._ -import sbt._ -import Build._ -import sbtassembly.AssemblyPlugin.autoImport._ - -object BuildExample extends sbt.Build { - - lazy val examples = Project( - id = "gearpump-examples", - base = file("examples"), - settings = commonSettings ++ noPublish - ).aggregate(wordcount, wordcountJava, complexdag, sol, fsio, examples_kafka, - distributedshell, stockcrawler, transport, examples_state, pagerank, distributeservice). - disablePlugins(sbtassembly.AssemblyPlugin) - - lazy val wordcountJava = Project( - id = "gearpump-examples-wordcountjava", - base = file("examples/streaming/wordcount-java"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.wordcountjava.WordCount"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn(streaming % "test->test; provided") - - lazy val wordcount = Project( - id = "gearpump-examples-wordcount", - base = file("examples/streaming/wordcount"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.wordcount.WordCount"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn(streaming % "test->test; provided") - - lazy val sol = Project( - id = "gearpump-examples-sol", - base = file("examples/streaming/sol"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := Some("org.apache.gearpump.streaming.examples.sol.SOL"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - - ) - ) dependsOn (streaming % "test->test; provided") - - lazy val complexdag = Project( - id = "gearpump-examples-complexdag", - base = file("examples/streaming/complexdag"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.complexdag.Dag"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn (streaming % "test->test; provided") - - lazy val transport = Project( - id = "gearpump-examples-transport", - base = file("examples/streaming/transport"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - libraryDependencies ++= Seq( - "io.spray" %% "spray-can" % sprayVersion, - "io.spray" %% "spray-routing-shapeless2" % sprayVersion, - "io.spray" %% "spray-json" % sprayJsonVersion, - "com.lihaoyi" %% "upickle" % upickleVersion - ), - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.transport.Transport"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn (streaming % "test->test; provided") - - lazy val distributedshell = Project( - id = "gearpump-examples-distributedshell", - base = file("examples/distributedshell"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.examples.distributedshell.DistributedShell"), - - target in assembly := baseDirectory.value.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn (core % "test->test; provided") - - lazy val distributeservice = Project( - id = "gearpump-examples-distributeservice", - base = file("examples/distributeservice"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - libraryDependencies ++= Seq( - "commons-httpclient" % "commons-httpclient" % commonsHttpVersion, - "commons-lang" % "commons-lang" % commonsLangVersion, - "commons-io" % "commons-io" % commonsIOVersion, - "io.spray" %% "spray-can" % sprayVersion, - "io.spray" %% "spray-routing-shapeless2" % sprayVersion - ), - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.experiments.distributeservice.DistributeService"), - - target in assembly := baseDirectory.value.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn (core % "test->test; provided") - - lazy val fsio = Project( - id = "gearpump-examples-fsio", - base = file("examples/streaming/fsio"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.hadoop" % "hadoop-common" % hadoopVersion - exclude("org.mortbay.jetty", "jetty-util") - exclude("org.mortbay.jetty", "jetty") - exclude("org.fusesource.leveldbjni", "leveldbjni-all") - exclude("tomcat", "jasper-runtime") - exclude("commons-beanutils", "commons-beanutils-core") - exclude("commons-beanutils", "commons-beanutils") - exclude("asm", "asm") - exclude("org.ow2.asm", "asm") - ), - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.fsio.SequenceFileIO"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn (streaming % "test->test; provided") - - lazy val examples_kafka = Project( - id = "gearpump-examples-kafka", - base = file("examples/streaming/kafka"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.kafka.wordcount.KafkaWordCount"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn(streaming % "test->test; provided", external_kafka) - - lazy val stockcrawler = Project( - id = "gearpump-examples-stockcrawler", - base = file("examples/streaming/stockcrawler"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - libraryDependencies ++= Seq( - "io.spray" %% "spray-can" % sprayVersion, - "io.spray" %% "spray-routing-shapeless2" % sprayVersion, - "com.lihaoyi" %% "upickle" % upickleVersion, - "commons-httpclient" % "commons-httpclient" % commonsHttpVersion, - "net.sourceforge.htmlcleaner" % "htmlcleaner" % "2.2", - "joda-time" % "joda-time" % "2.7", - "org.joda" % "joda-convert" % "1.2", - "io.spray" %% "spray-json" % sprayJsonVersion - ), - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.stock.main.Stock"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn(streaming % "test->test; provided", external_kafka % "test->test") - - lazy val examples_state = Project( - id = "gearpump-examples-state", - base = file("examples/streaming/state"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - libraryDependencies ++= Seq( - "org.apache.hadoop" % "hadoop-common" % hadoopVersion - exclude("org.mortbay.jetty", "jetty-util") - exclude("org.mortbay.jetty", "jetty") - exclude("org.fusesource.leveldbjni", "leveldbjni-all") - exclude("tomcat", "jasper-runtime") - exclude("commons-beanutils", "commons-beanutils-core") - exclude("commons-beanutils", "commons-beanutils") - exclude("asm", "asm") - exclude("org.ow2.asm", "asm"), - "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion - ), - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.streaming.examples.state.MessageCountApp"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ).dependsOn(streaming % "test->test; provided", - external_hadoopfs, external_monoid, external_serializer, external_kafka) - - lazy val pagerank = Project( - id = "gearpump-examples-pagerank", - base = file("examples/pagerank"), - settings = commonSettings ++ noPublish ++ myAssemblySettings ++ - Seq( - mainClass in(Compile, packageBin) := - Some("org.apache.gearpump.experiments.pagerank.example.PageRankExample"), - - target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / - CrossVersion.binaryScalaVersion(scalaVersion.value) - ) - ) dependsOn (streaming % "test->test; provided") -} http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/project/BuildExamples.scala ---------------------------------------------------------------------- diff --git a/project/BuildExamples.scala b/project/BuildExamples.scala new file mode 100644 index 0000000..bac84a8 --- /dev/null +++ b/project/BuildExamples.scala @@ -0,0 +1,181 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import sbt.Keys._ +import sbt._ +import BuildGearpump._ +import BuildExternals._ +import Dependencies._ +import sbtassembly.AssemblyPlugin.autoImport._ + +object BuildExamples extends sbt.Build { + + lazy val examples: Seq[ProjectReference] = Seq( + complexdag, + distributedshell, + distributeservice, + examples_kafka, + examples_state, + fsio, + pagerank, + sol, + stockcrawler, + transport, + wordcount, + wordcountJava + ) + + lazy val wordcountJava = Project( + id = "gearpump-examples-wordcountjava", + base = file("examples/streaming/wordcount-java"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.wordcountjava.WordCount") + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val wordcount = Project( + id = "gearpump-examples-wordcount", + base = file("examples/streaming/wordcount"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.wordcount.WordCount") + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val sol = Project( + id = "gearpump-examples-sol", + base = file("examples/streaming/sol"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.sol.SOL") + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val complexdag = Project( + id = "gearpump-examples-complexdag", + base = file("examples/streaming/complexdag"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.complexdag.Dag") + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val transport = Project( + id = "gearpump-examples-transport", + base = file("examples/streaming/transport"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.transport.Transport") ++ + Seq( + libraryDependencies ++= Seq( + "io.spray" %% "spray-can" % sprayVersion, + "io.spray" %% "spray-routing-shapeless2" % sprayVersion, + "io.spray" %% "spray-json" % sprayJsonVersion, + "com.lihaoyi" %% "upickle" % upickleVersion + ) + ) + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val distributedshell = Project( + id = "gearpump-examples-distributedshell", + base = file("examples/distributedshell"), + settings = exampleSettings("org.apache.gearpump.examples.distributedshell.DistributedShell") + ).dependsOn(core % "test->test; provided") + + lazy val distributeservice = Project( + id = "gearpump-examples-distributeservice", + base = file("examples/distributeservice"), + settings = + exampleSettings("org.apache.gearpump.experiments.distributeservice.DistributeService") ++ + Seq( + libraryDependencies ++= Seq( + "commons-httpclient" % "commons-httpclient" % commonsHttpVersion, + "commons-lang" % "commons-lang" % commonsLangVersion, + "commons-io" % "commons-io" % commonsIOVersion, + "io.spray" %% "spray-can" % sprayVersion, + "io.spray" %% "spray-routing-shapeless2" % sprayVersion + ) + ) + ).dependsOn(core % "test->test; provided") + + lazy val fsio = Project( + id = "gearpump-examples-fsio", + base = file("examples/streaming/fsio"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.fsio.SequenceFileIO") ++ + Seq( + libraryDependencies ++= Seq( + "org.apache.hadoop" % "hadoop-common" % hadoopVersion + exclude("org.mortbay.jetty", "jetty-util") + exclude("org.mortbay.jetty", "jetty") + exclude("org.fusesource.leveldbjni", "leveldbjni-all") + exclude("tomcat", "jasper-runtime") + exclude("commons-beanutils", "commons-beanutils-core") + exclude("commons-beanutils", "commons-beanutils") + exclude("asm", "asm") + exclude("org.ow2.asm", "asm") + ) + ) + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val examples_kafka = Project( + id = "gearpump-examples-kafka", + base = file("examples/streaming/kafka"), + settings = + exampleSettings("org.apache.gearpump.streaming.examples.kafka.wordcount.KafkaWordCount") + ).dependsOn(core % "provided", streaming % "test->test; provided", external_kafka) + + lazy val stockcrawler = Project( + id = "gearpump-examples-stockcrawler", + base = file("examples/streaming/stockcrawler"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.stock.main.Stock") ++ + Seq( + libraryDependencies ++= Seq( + "io.spray" %% "spray-can" % sprayVersion, + "io.spray" %% "spray-routing-shapeless2" % sprayVersion, + "com.lihaoyi" %% "upickle" % upickleVersion, + "commons-httpclient" % "commons-httpclient" % commonsHttpVersion, + "net.sourceforge.htmlcleaner" % "htmlcleaner" % "2.2", + "joda-time" % "joda-time" % "2.7", + "org.joda" % "joda-convert" % "1.2", + "io.spray" %% "spray-json" % sprayJsonVersion + ) + ) + ).dependsOn(core % "provided", streaming % "test->test; provided", external_kafka % "test->test") + + lazy val examples_state = Project( + id = "gearpump-examples-state", + base = file("examples/streaming/state"), + settings = exampleSettings("org.apache.gearpump.streaming.examples.state.MessageCountApp") ++ + Seq( + libraryDependencies ++= Seq( + "org.apache.hadoop" % "hadoop-common" % hadoopVersion + exclude("org.mortbay.jetty", "jetty-util") + exclude("org.mortbay.jetty", "jetty") + exclude("org.fusesource.leveldbjni", "leveldbjni-all") + exclude("tomcat", "jasper-runtime") + exclude("commons-beanutils", "commons-beanutils-core") + exclude("commons-beanutils", "commons-beanutils") + exclude("asm", "asm") + exclude("org.ow2.asm", "asm"), + "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion + ) + ) + ).dependsOn(core % "provided", streaming % "test->test; provided", + external_hadoopfs, external_monoid, external_serializer, external_kafka) + + lazy val pagerank = Project( + id = "gearpump-examples-pagerank", + base = file("examples/pagerank"), + settings = exampleSettings("org.apache.gearpump.experiments.pagerank.example.PageRankExample") + ).dependsOn(core % "provided", streaming % "test->test; provided") + + private def exampleSettings(className: String): Seq[Def.Setting[_]] = + commonSettings ++ noPublish ++ myAssemblySettings ++ Seq( + mainClass in(Compile, packageBin) := + Some(className), + target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" / + CrossVersion.binaryScalaVersion(scalaVersion.value) + ) +} http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/project/BuildExperiments.scala ---------------------------------------------------------------------- diff --git a/project/BuildExperiments.scala b/project/BuildExperiments.scala new file mode 100644 index 0000000..92a26c6 --- /dev/null +++ b/project/BuildExperiments.scala @@ -0,0 +1,118 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import BuildGearpump._ +import BuildDashboard.services +import Dependencies._ +import sbt._ +import sbt.Keys._ + +object BuildExperiments extends sbt.Build { + + lazy val experiments: Seq[ProjectReference] = Seq( + // akkastream, + cgroup, + redis, + storm, + yarn + ) + + lazy val yarn = Project( + id = "gearpump-experiments-yarn", + base = file("experiments/yarn"), + settings = commonSettings ++ noPublish ++ + Seq( + libraryDependencies ++= Seq( + "org.apache.hadoop" % "hadoop-yarn-api" % hadoopVersion, + "org.apache.hadoop" % "hadoop-yarn-client" % hadoopVersion, + "org.apache.hadoop" % "hadoop-yarn-common" % hadoopVersion, + "commons-httpclient" % "commons-httpclient" % commonsHttpVersion, + "org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion, + "org.apache.hadoop" % "hadoop-yarn-server-resourcemanager" % hadoopVersion % "provided", + "org.apache.hadoop" % "hadoop-yarn-server-nodemanager" % hadoopVersion % "provided" + ) + )) + .dependsOn(services % "test->test;compile->compile", + core % "provided", gearpumpHadoop).disablePlugins(sbtassembly.AssemblyPlugin) + + lazy val akkastream = Project( + id = "gearpump-experiments-akkastream", + base = file("experiments/akkastream"), + settings = commonSettings ++ noPublish ++ myAssemblySettings ++ + Seq( + libraryDependencies ++= Seq( + "org.json4s" %% "json4s-jackson" % "3.2.11" + ), + mainClass in(Compile, packageBin) := Some("akka.stream.gearpump.example.Test") + )) + .dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val redis = Project( + id = "gearpump-experiments-redis", + base = file("experiments/redis"), + settings = commonSettings ++ noPublish ++ + Seq( + libraryDependencies ++= Seq( + "redis.clients" % "jedis" % jedisVersion + ) + ) + ).dependsOn(core % "provided", streaming % "test->test; provided") + + lazy val storm = Project( + id = "gearpump-experiments-storm", + base = file("experiments/storm"), + settings = commonSettings ++ noPublish ++ + Seq( + libraryDependencies ++= Seq( + "commons-io" % "commons-io" % commonsIOVersion, + "org.apache.storm" % "storm-core" % stormVersion + exclude("clj-stacktrace", "clj-stacktrace") + exclude("ch.qos.logback", "logback-classic") + exclude("ch.qos.logback", "logback-core") + exclude("clj-time", "clj-time") + exclude("clout", "clout") + exclude("compojure", "compojure") + exclude("hiccup", "hiccup") + exclude("jline", "jline") + exclude("joda-time", "joda-time") + exclude("org.clojure", "core.incubator") + exclude("org.clojure", "math.numeric-tower") + exclude("org.clojure", "tools.logging") + exclude("org.clojure", "tools.cli") + exclude("org.clojure", "tools.macro") + exclude("org.mortbay.jetty", "jetty-util") + exclude("org.mortbay.jetty", "jetty") + exclude("org.ow2.asm", "asm") + exclude("org.slf4j", "log4j-over-slf4j") + exclude("org.apache.logging.log4j", "log4j-slf4j-impl") + exclude("ring", "ring-core") + exclude("ring", "ring-devel") + exclude("ring", "ring-jetty-adapter") + exclude("ring", "ring-servlet") + ) + )) + .dependsOn (core % "provided", streaming % "test->test; provided") + .disablePlugins(sbtassembly.AssemblyPlugin) + + lazy val cgroup = Project( + id = "gearpump-experimental-cgroup", + base = file("experiments/cgroup"), + settings = commonSettings ++ noPublish) + .dependsOn (core % "test->test; compile->compile") + .disablePlugins(sbtassembly.AssemblyPlugin) +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/0b56de39/project/BuildExternals.scala ---------------------------------------------------------------------- diff --git a/project/BuildExternals.scala b/project/BuildExternals.scala new file mode 100644 index 0000000..48715cb --- /dev/null +++ b/project/BuildExternals.scala @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import BuildGearpump._ +import Dependencies._ +import Docs._ +import sbt._ +import sbt.Keys._ + +object BuildExternals extends sbt.Build { + + lazy val externals: Seq[ProjectReference] = Seq( + external_hbase, + external_kafka, + external_monoid, + external_hadoopfs + ) + + lazy val external_kafka = Project( + id = "gearpump-external-kafka", + base = file("external/kafka"), + settings = commonSettings ++ javadocSettings ++ + Seq( + libraryDependencies ++= Seq( + "org.apache.kafka" %% "kafka" % kafkaVersion, + "com.twitter" %% "bijection-core" % bijectionVersion, + ("org.apache.kafka" %% "kafka" % kafkaVersion classifier ("test")) % "test" + ) + )) + .dependsOn(core % "provided", streaming % "test->test; provided") + .disablePlugins(sbtassembly.AssemblyPlugin) + + lazy val external_hbase = Project( + id = "gearpump-external-hbase", + base = file("external/hbase"), + settings = commonSettings ++ javadocSettings ++ + Seq( + libraryDependencies ++= Seq( + "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided", + "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion % "provided", + "org.apache.hadoop" % "hadoop-mapreduce-client-core" % hadoopVersion % "provided", + "org.codehaus.jackson" % "jackson-core-asl" % "1.9.13" % "provided", + "org.codehaus.jackson" % "jackson-mapper-asl" % "1.9.13" % "provided", + "org.apache.hbase" % "hbase-client" % hbaseVersion + exclude("com.github.stephenc.findbugs", "findbugs-annotations") + exclude("com.google.guava", "guava") + exclude("commons-codec", "commons-codec") + exclude("commons-io", "commons-io") + exclude("commons-lang", "commons-lang") + exclude("commons-logging", "commons-logging") + exclude("io.netty", "netty") + exclude("junit", "junit") + exclude("log4j", "log4j") + exclude("org.apache.zookeeper", "zookeeper") + exclude("org.codehaus.jackson", "jackson-mapper-asl"), + "org.apache.hbase" % "hbase-common" % hbaseVersion + exclude("com.github.stephenc.findbugs", "findbugs-annotations") + exclude("com.google.guava", "guava") + exclude("commons-codec", "commons-codec") + exclude("commons-collections", "commons-collections") + exclude("commons-io", "commons-io") + exclude("commons-lang", "commons-lang") + exclude("commons-logging", "commons-logging") + exclude("junit", "junit") + exclude("log4j", "log4j") + ) + )) + .dependsOn (core % "provided", streaming % "test->test; provided") + .disablePlugins(sbtassembly.AssemblyPlugin) + + lazy val external_monoid = Project( + id = "gearpump-external-monoid", + base = file("external/monoid"), + settings = commonSettings ++ javadocSettings ++ + Seq( + libraryDependencies ++= Seq( + "com.twitter" %% "algebird-core" % algebirdVersion + ) + )) + .dependsOn (core % "provided", streaming % "provided") + .disablePlugins(sbtassembly.AssemblyPlugin) + + lazy val external_serializer = Project( + id = "gearpump-external-serializer", + base = file("external/serializer"), + settings = commonSettings ++ javadocSettings ++ + Seq( + libraryDependencies ++= Seq( + "com.twitter" %% "chill-bijection" % chillVersion + exclude("com.esotericsoftware.kryo", "kyro") + exclude("com.esotericsoftware.minlog", "minlog") + ) + )) + .dependsOn (core % "provided", streaming % "provided") + .disablePlugins(sbtassembly.AssemblyPlugin) + + lazy val external_hadoopfs = Project( + id = "gearpump-external-hadoopfs", + base = file("external/hadoopfs"), + settings = commonSettings ++ javadocSettings ++ + Seq( + libraryDependencies ++= Seq( + "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided", + "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion % "provided" + ) + )) + .dependsOn(core % "provided", streaming % "test->test; provided") + .disablePlugins(sbtassembly.AssemblyPlugin) +} \ No newline at end of file
