You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@gearpump.apache.org by hu...@apache.org on 2017/01/20 08:47:44 UTC

[04/19] incubator-gearpump git commit: merge master into akka-streams branch

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/licenses/LICENSE-stax-api.txt
----------------------------------------------------------------------
diff --git a/licenses/LICENSE-stax-api.txt b/licenses/LICENSE-stax-api.txt
new file mode 100644
index 0000000..bcb65a3
--- /dev/null
+++ b/licenses/LICENSE-stax-api.txt
@@ -0,0 +1,308 @@
+COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0
+1. Definitions.
+
+1.1. Contributor means each individual or entity
+that creates or contributes to the creation of
+Modifications.
+
+1.2. Contributor Version means the combination of the
+Original Software, prior Modifications used by a Contributor (if any), and the
+Modifications made by that particular Contributor.
+
+1.3. Covered
+Software means (a) the Original Software, or (b) Modifications, or (c) the
+combination of files containing Original Software with files containing
+Modifications, in each case including portions
+thereof.
+
+1.4. Executable means the Covered Software in any form other
+than Source Code.
+
+1.5. Initial Developer means the individual or entity
+that first makes Original Software available under this
+License.
+
+1.6. Larger Work means a work which combines Covered Software or
+portions thereof with code not governed by the terms of this
+License.
+
+1.7. License means this document.
+
+1.8. Licensable means
+having the right to grant, to the maximum extent possible, whether at the time
+of the initial grant or subsequently acquired, any and all of the rights
+conveyed herein.
+
+1.9. Modifications means the Source Code and Executable
+form of any of the following:
+A. Any file that results from an addition to,
+deletion from or modification of the contents of a file containing Original
+Software or previous Modifications;
+B. Any new file that contains any part of the Original Software
+or previous Modification; or
+C. Any new file that is contributed or otherwise made available
+under the terms of this License.
+
+1.10. Original Software means the Source Code and Executable form of
+computer software code that is originally released under this License.
+
+1.11. Patent Claims means any patent claim(s), now owned or
+hereafter acquired, including without limitation, method, process, and apparatus
+claims, in any patent Licensable by grantor.
+
+1.12. Source Code means (a) the common form of computer software code in which
+modifications are made and (b) associated documentation included in or
+with such code.
+
+1.13. You (or Your) means an individual or a legal entity exercising rights
+under, and complying with all of the terms of, this License. For legal entities,
+You includes any entity which controls, is controlled by, or is under common control
+with You. For purposes of this definition, control means (a) the power, direct
+or indirect, to cause the direction or management of such entity, whether by
+contract or otherwise, or (b) ownership of more than fifty percent (50%) of the
+outstanding shares or beneficial ownership of such entity.
+
+2. License Grants.
+
+2.1. The Initial Developer Grant. Conditioned upon Your compliance
+with Section 3.1 below and subject to third party intellectual property claims,
+the Initial Developer hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than
+patent or trademark) Licensable by Initial Developer, to use, reproduce, modify,
+display, perform, sublicense and distribute the Original Software (or portions
+thereof), with or without Modifications, and/or as part of a Larger Work;
+and
+
+(b) under Patent Claims infringed by the making, using or selling of
+Original Software, to make, have made, use, practice, sell, and offer for sale,
+and/or otherwise dispose of the Original Software (or portions
+thereof);
+
+(c) The licenses granted in Sections 2.1(a) and (b) are
+effective on the date Initial Developer first distributes or otherwise makes the
+Original Software available to a third party under the terms of this
+License;
+
+(d) Notwithstanding Section 2.1(b) above, no patent license is
+granted: (1) for code that You delete from the Original Software, or (2) for
+infringements caused by: (i) the modification of the Original Software, or
+(ii) the combination of the Original Software with other software or
+devices.
+
+2.2. Contributor Grant. Conditioned upon Your compliance with
+Section 3.1 below and subject to third party intellectual property claims, each
+Contributor hereby grants You a world-wide, royalty-free, non-exclusive
+license:
+
+(a) under intellectual property rights (other than patent or
+trademark) Licensable by Contributor to use, reproduce, modify, display,
+perform, sublicense and distribute the Modifications created by such Contributor
+(or portions thereof), either on an unmodified basis, with other Modifications,
+as Covered Software and/or as part of a Larger Work; and
+
+(b) under Patent
+Claims infringed by the making, using, or selling of Modifications made by that
+Contributor either alone and/or in combination with its Contributor Version (or
+portions of such combination), to make, use, sell, offer for sale, have made,
+and/or otherwise dispose of: (1) Modifications made by that Contributor (or
+portions thereof); and (2) the combination of Modifications made by that
+Contributor with its Contributor Version (or portions of such
+combination).
+
+(c) The licenses granted in Sections 2.2(a) and 2.2(b) are
+effective on the date Contributor first distributes or otherwise makes the
+Modifications available to a third party.
+
+(d) Notwithstanding Section 2.2(b)
+above, no patent license is granted: (1) for any code that Contributor has
+deleted from the Contributor Version; (2) for infringements caused by:
+(i) third party modifications of Contributor Version, or (ii) the combination
+of Modifications made by that Contributor with other software (except as part of
+the Contributor Version) or other devices; or (3) under Patent Claims infringed
+by Covered Software in the absence of Modifications made by that
+Contributor.
+
+3. Distribution Obligations.
+
+3.1. Availability of Source
+Code. Any Covered Software that You distribute or otherwise make available in
+Executable form must also be made available in Source Code form and that Source
+Code form must be distributed only under the terms of this License. You must
+include a copy of this License with every copy of the Source Code form of the
+Covered Software You distribute or otherwise make available. You must inform
+recipients of any such Covered Software in Executable form as to how they can
+obtain such Covered Software in Source Code form in a reasonable manner on or
+through a medium customarily used for software exchange.
+
+3.2.
+Modifications. The Modifications that You create or to which You contribute are
+governed by the terms of this License. You represent that You believe Your
+Modifications are Your original creation(s) and/or You have sufficient rights to
+grant the rights conveyed by this License.
+
+3.3. Required Notices. You must
+include a notice in each of Your Modifications that identifies You as the
+Contributor of the Modification. You may not remove or alter any copyright,
+patent or trademark notices contained within the Covered Software, or any
+notices of licensing or any descriptive text giving attribution to any
+Contributor or the Initial Developer.
+
+3.4. Application of Additional Terms.
+You may not offer or impose any terms on any Covered Software in Source Code
+form that alters or restricts the applicable version of this License or the
+recipients rights hereunder. You may choose to offer, and to charge a fee for,
+warranty, support, indemnity or liability obligations to one or more recipients
+of Covered Software. However, you may do so only on Your own behalf, and not on
+behalf of the Initial Developer or any Contributor. You must make it absolutely
+clear that any such warranty, support, indemnity or liability obligation is
+offered by You alone, and You hereby agree to indemnify the Initial Developer
+and every Contributor for any liability incurred by the Initial Developer or
+such Contributor as a result of warranty, support, indemnity or liability terms
+You offer.
+
+3.5. Distribution of Executable Versions. You may distribute the
+Executable form of the Covered Software under the terms of this License or under
+the terms of a license of Your choice, which may contain terms different from
+this License, provided that You are in compliance with the terms of this License
+and that the license for the Executable form does not attempt to limit or alter
+the recipients rights in the Source Code form from the rights set forth in this
+License. If You distribute the Covered Software in Executable form under a
+different license, You must make it absolutely clear that any terms which differ
+from this License are offered by You alone, not by the Initial Developer or
+Contributor. You hereby agree to indemnify the Initial Developer and every
+Contributor for any liability incurred by the Initial Developer or such
+Contributor as a result of any such terms You offer.
+
+3.6. Larger Works. You
+may create a Larger Work by combining Covered Software with other code not
+governed by the terms of this License and distribute the Larger Work as a single
+product. In such a case, You must make sure the requirements of this License are
+fulfilled for the Covered Software.
+
+4. Versions of the License.
+
+4.1.
+New Versions. Sun Microsystems, Inc. is the initial license steward and may
+publish revised and/or new versions of this License from time to time. Each
+version will be given a distinguishing version number. Except as provided in
+Section 4.3, no one other than the license steward has the right to modify this
+License.
+
+4.2. Effect of New Versions. You may always continue to use,
+distribute or otherwise make the Covered Software available under the terms of
+the version of the License under which You originally received the Covered
+Software. If the Initial Developer includes a notice in the Original Software
+prohibiting it from being distributed or otherwise made available under any
+subsequent version of the License, You must distribute and make the Covered
+Software available under the terms of the version of the License under which You
+originally received the Covered Software. Otherwise, You may also choose to use,
+distribute or otherwise make the Covered Software available under the terms of
+any subsequent version of the License published by the license
+steward.
+
+4.3. Modified Versions. When You are an Initial Developer and You
+want to create a new license for Your Original Software, You may create and use
+a modified version of this License if You: (a) rename the license and remove
+any references to the name of the license steward (except to note that the
+license differs from this License); and (b) otherwise make it clear that the
+license contains terms which differ from this License.
+
+5. DISCLAIMER OF WARRANTY.
+
+COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN AS IS BASIS,
+WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT
+LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS,
+MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD ANY
+COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER
+OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR
+CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
+LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER
+THIS DISCLAIMER.
+
+6. TERMINATION.
+
+6.1. This License and the rights
+granted hereunder will terminate automatically if You fail to comply with terms
+herein and fail to cure such breach within 30 days of becoming aware of the
+breach. Provisions which, by their nature, must remain in effect beyond the
+termination of this License shall survive.
+
+6.2. If You assert a patent
+infringement claim (excluding declaratory judgment actions) against Initial
+Developer or a Contributor (the Initial Developer or Contributor against whom
+You assert such claim is referred to as Participant) alleging that the
+Participant Software (meaning the Contributor Version where the Participant is a
+Contributor or the Original Software where the Participant is the Initial
+Developer) directly or indirectly infringes any patent, then any and all rights
+granted directly or indirectly to You by such Participant, the Initial Developer
+(if the Initial Developer is not the Participant) and all Contributors under
+Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from
+Participant terminate prospectively and automatically at the expiration of such
+60 day notice period, unless if within such 60 day period You withdraw Your
+claim with respect to the Participant Software against such Participant either
+unilaterally or pursuant to a written agreement with Participant.
+
+6.3. In
+the event of termination under Sections 6.1 or 6.2 above, all end user licenses
+that have been validly granted by You or any distributor hereunder prior to
+termination (excluding licenses granted to You by any distributor) shall survive
+termination.
+
+7. LIMITATION OF LIABILITY.
+UNDER NO CIRCUMSTANCES AND UNDER
+NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE,
+SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF
+COVERED SOFTWARE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY
+PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
+CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF
+GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
+COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE
+POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO
+LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTYS NEGLIGENCE TO
+THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT
+ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
+THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
+
+8. U.S. GOVERNMENT END USERS.
+
+The Covered Software is a commercial item, as that term is defined in
+48 C.F.R. 2.101 (Oct. 1995), consisting of commercial computer software (as
+that term is defined at 48 C.F.R.  252.227-7014(a)(1)) and commercial computer
+software documentation as such terms are used in 48 C.F.R. 12.212 (Sept.
+1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through
+227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Software
+with only those rights set forth herein. This U.S. Government Rights clause is
+in lieu of, and supersedes, any other FAR, DFAR, or other clause or provision
+that addresses Government rights in computer software under this
+License.
+
+9. MISCELLANEOUS.
+This License represents the complete agreement
+concerning subject matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent necessary to
+make it enforceable. This License shall be governed by the law of the
+jurisdiction specified in a notice contained within the Original Software
+(except to the extent applicable law, if any, provides otherwise), excluding
+such jurisdictions conflict-of-law provisions. Any litigation relating to this
+License shall be subject to the jurisdiction of the courts located in the
+jurisdiction and venue specified in a notice contained within the Original
+Software, with the losing party responsible for costs, including, without
+limitation, court costs and reasonable attorneys fees and expenses. The
+application of the United Nations Convention on Contracts for the International
+Sale of Goods is expressly excluded. Any law or regulation which provides that
+the language of a contract shall be construed against the drafter shall not
+apply to this License. You agree that You alone are responsible for compliance
+with the United States export administration regulations (and the export control
+laws and regulation of any other countries) when You use, distribute or
+otherwise make available any Covered Software.
+
+10. RESPONSIBILITY FOR CLAIMS.
+As between Initial Developer and the Contributors, each party is
+responsible for claims and damages arising, directly or indirectly, out of its
+utilization of rights under this License and You agree to work with Initial
+Developer and Contributors to distribute such responsibility on an equitable
+basis. Nothing herein is intended or shall be deemed to constitute any admission
+of liability.

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/licenses/LICENSE-ui-select.txt
----------------------------------------------------------------------
diff --git a/licenses/LICENSE-ui-select.txt b/licenses/LICENSE-ui-select.txt
new file mode 100644
index 0000000..b62d482
--- /dev/null
+++ b/licenses/LICENSE-ui-select.txt
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2014 AngularUI
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/licenses/LICENSE-upickle.txt
----------------------------------------------------------------------
diff --git a/licenses/LICENSE-upickle.txt b/licenses/LICENSE-upickle.txt
new file mode 100644
index 0000000..5f0ccbe
--- /dev/null
+++ b/licenses/LICENSE-upickle.txt
@@ -0,0 +1,7 @@
+Copyright (c) 2016 haoyi.sg@gmail.com
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/licenses/LICENSE-xmlenc.txt
----------------------------------------------------------------------
diff --git a/licenses/LICENSE-xmlenc.txt b/licenses/LICENSE-xmlenc.txt
new file mode 100644
index 0000000..3a70c9b
--- /dev/null
+++ b/licenses/LICENSE-xmlenc.txt
@@ -0,0 +1,27 @@
+Copyright 2003-2005, Ernst de Haan <wf...@gmail.com>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this
+   list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+   this list of conditions and the following disclaimer in the documentation
+   and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its contributors
+   may be used to endorse or promote products derived from this software
+   without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/licenses/LICENSE-xz.txt
----------------------------------------------------------------------
diff --git a/licenses/LICENSE-xz.txt b/licenses/LICENSE-xz.txt
new file mode 100644
index 0000000..ee50e15
--- /dev/null
+++ b/licenses/LICENSE-xz.txt
@@ -0,0 +1 @@
+This Java implementation of XZ has been put into the public domain, thus you can do whatever you want with it. All the files in the package have been written by Lasse Collin, but some files are heavily based on public domain code written by Igor Pavlov.

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/notes/0.8.2.markdown
----------------------------------------------------------------------
diff --git a/notes/0.8.2.markdown b/notes/0.8.2.markdown
new file mode 100644
index 0000000..d62e8e6
--- /dev/null
+++ b/notes/0.8.2.markdown
@@ -0,0 +1,41 @@
+This is our first **binary** release as Apache Incubator.
+
+## Highlights
+
+- window DSL. Users can write window-aggregation  applications with high level DSL now.
+- experimental Redis connector.
+
+## Change log:
+
+- GEARPUMP-241 Update CHANGELOG.md to reflect all JIRA's 
+- GEARPUMP-240 Correct licenses
+- GEARPUMP-239 Correct binary and source licenses subdirectory
+- GEARPUMP-238 Correct release naming and packaging
+- GEARPUMP-237 do not manually download sbt launcher jar on travis
+- GEARPUMP-234 Update LICENSE and related files for 0.8.2-incubating binary release
+- GEARPUMP-230 Removed unused code from AppMasterService
+- GEARPUMP-227 remove unneeded license files
+- GEARPUMP-226 refactor build files
+- GEARPUMP-225 move partitioner from gearpump-core to module gearpump-streaming
+- GEARPUMP-224 Merge gearpump-daemon to gearpump-core
+- GEARPUMP-222 DFSJarStore is loaded even when local file path is configured
+- GEARPUMP-218 add shaded library as transitive dependencies
+- GEARPUMP-215 Gearpump Redis Integration - RedisStorage
+- GEARPUMP-213 build docs with MkDocs
+- GEARPUMP-212 Make Gearpump's shaded artifacts publishable
+- GEARPUMP-208 Demo site goes down a lot. Also references gearpump.io when connection is refused
+- GEARPUMP-207 remove hadoop dependency out of application path from dashboard
+- GEARPUMP-205 remove hdfs dependency from command gear's classpath
+- GEARPUMP-204 Add unit test for external_hbase module
+- GEARPUMP-203 Use DataSourceTask / DataSinkTask for DSL
+- GEARPUMP-201 integration test failure
+- GEARPUMP-197 Busy loop in FetchThread when incoming queue is full
+- GEARPUMP-189 Update project/Build.scala to enable publishing releases to https://repository.apache.org/content/repositories/releases/org/apache/gearpump/
+- GEARPUMP-188 use java.time.Instant for Task start time
+- GEARPUMP-185 Yarn kills Apache Gearpump's worker if the memory usage is too high
+- GEARPUMP-171 Fix some typos
+- GEARPUMP-48 Improve Java interoperability
+- GEARPUMP-37 Sometimes application clock is "not started" when the data stream is very slow
+- GEARPUMP-32 Minimum clock of source Tasks maybe inaccurate
+- GEARPUMP-23 add window DSL
+- GEARPUMP-15 Define initial Apache branded home website
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/project/Build.scala
----------------------------------------------------------------------
diff --git a/project/Build.scala b/project/Build.scala
deleted file mode 100644
index a1e6ca5..0000000
--- a/project/Build.scala
+++ /dev/null
@@ -1,570 +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.11"
-  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:git@github.com: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 daemonDependencies = Seq(
-    libraryDependencies ++= Seq(
-      "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
-        exclude("com.typesafe.akka", "akka-stream_2.11"),
-      "org.apache.hadoop" % "hadoop-common" % hadoopVersion % "provided"
-    )
-  )
-
-  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-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"
-        exclude("com.typesafe.akka", "akka-stream_2.11"),
-      "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, daemon, streaming, services, external_kafka, external_monoid,
-      external_serializer, examples, akkastream, storm, yarn, external_hbase, 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 daemon = Project(
-    id = "gearpump-daemon",
-    base = file("daemon"),
-    settings = commonSettings ++ daemonDependencies)
-      .dependsOn(core % "test->test; compile->compile", cgroup % "test->test; compile->compile")
-      .disablePlugins(sbtassembly.AssemblyPlugin)
-
-  lazy val cgroup = Project(
-    id = "gearpump-experimental-cgroup",
-    base = file("experiments/cgroup"),
-    settings = commonSettings ++ noPublish ++ daemonDependencies)
-      .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, daemon % "test->test")
-    .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"
-        exclude("com.typesafe.akka", "akka-stream_2.11"),
-      "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
-        exclude("com.typesafe.akka", "akka-stream_2.11"),
-      "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 ++
-      Seq(
-        libraryDependencies ++= Seq(
-          "com.typesafe.akka" %% "akka-stream" % akkaVersion,
-          "org.apache.hadoop" % "hadoop-common" % hadoopVersion,
-          "org.json4s" %% "json4s-jackson" % "3.2.11",
-          "org.scalatest" %% "scalatest" % scalaTestVersion % "test"
-        )
-      ))
-      .dependsOn (services % "test->test; compile->compile", daemon % "test->test; compile->compile")
-      .disablePlugins(sbtassembly.AssemblyPlugin)
-
-  lazy val redis = Project(
-    id = "gearpump-experiments-redis",
-    base = file("experiments/redis"),
-    settings = commonSettings ++ noPublish ++ myAssemblySettings ++
-      Seq(
-        libraryDependencies ++= Seq(
-          "redis.clients" % "jedis" % "2.9.0"
-        ),
-        mainClass in(Compile, packageBin) := Some("org.apache.gearpump.example.Test")
-      ))
-      .dependsOn(streaming % "test->test; provided", daemon % "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 yarn = Project(
-    id = "gearpump-experiments-yarn",
-    base = file("experiments/yarn"),
-    settings = commonSettings ++ noPublish ++
-      Seq(
-        libraryDependencies ++= Seq(
-          "org.apache.hadoop" % "hadoop-hdfs" % hadoopVersion,
-          "org.apache.hadoop" % "hadoop-common" % hadoopVersion,
-          "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", daemon % "provided", core % "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-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/cc0578e5/project/BuildDashboard.scala
----------------------------------------------------------------------
diff --git a/project/BuildDashboard.scala b/project/BuildDashboard.scala
new file mode 100644
index 0000000..cfa6aae
--- /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" % akkaHttpVersion % "test",
+      "org.scalatest" %% "scalatest" % scalaTestVersion % "test",
+      "com.lihaoyi" %% "upickle" % upickleVersion,
+      "com.softwaremill.akka-http-session" %% "core" % "0.3.0",
+      "com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion,
+      "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/cc0578e5/project/BuildExample.scala
----------------------------------------------------------------------
diff --git a/project/BuildExample.scala b/project/BuildExample.scala
deleted file mode 100644
index 75fc9be..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", daemon % "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", daemon % "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 (daemon % "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 (daemon % "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/cc0578e5/project/BuildExamples.scala
----------------------------------------------------------------------
diff --git a/project/BuildExamples.scala b/project/BuildExamples.scala
new file mode 100644
index 0000000..2af19ba
--- /dev/null
+++ b/project/BuildExamples.scala
@@ -0,0 +1,209 @@
+/*
+ * 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,
+    example_hbase
+  )
+
+  lazy val example_hbase = Project(
+    id = "gearpump-examples-hbase",
+    base = file("examples/streaming/hbase"),
+    settings = commonSettings ++ noPublish ++ myAssemblySettings ++
+      Seq(
+        libraryDependencies ++= Seq(
+          "org.apache.hadoop" % "hadoop-common" % hadoopVersion
+            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.hbase.HBaseConn"),
+
+        target in assembly := baseDirectory.value.getParentFile.getParentFile / "target" /
+          CrossVersion.binaryScalaVersion(scalaVersion.value)
+      )
+  ) dependsOn(streaming % "test->test; provided", core % "provided", external_hbase)
+
+  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 = 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(
+      mainClass in(Compile, packageBin) :=
+        Some("org.apache.gearpump.experiments.distributeservice.DistributeService"),
+      target in assembly := baseDirectory.value.getParentFile / "target" /
+        CrossVersion.binaryScalaVersion(scalaVersion.value),
+      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/cc0578e5/project/BuildExperiments.scala
----------------------------------------------------------------------
diff --git a/project/BuildExperiments.scala b/project/BuildExperiments.scala
new file mode 100644
index 0000000..eb5f9e1
--- /dev/null
+++ b/project/BuildExperiments.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 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.slf4j", "slf4j-api")
+            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 % "provided")
+    .disablePlugins(sbtassembly.AssemblyPlugin)
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-gearpump/blob/cc0578e5/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