blob: 80882060bd69779d10dca825e797b2525cc6fa60 [file] [log] [blame]
/*
* 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 sbtassembly.AssemblyPlugin.autoImport._
object BuildShaded extends sbt.Build {
val guavaVersion = "16.0.1"
val codahaleVersion = "3.0.2"
val kryoVersion = "0.4.1"
val gsCollectionsVersion = "6.2.0"
private val scalaVersionMajor = "2.11"
val shadeAssemblySettings = Seq(
scalaVersion := Build.scalaVersionNumber,
test in assembly := {},
assemblyOption in assembly ~= {
_.copy(includeScala = false)
},
assemblyJarName in assembly := {
s"${name.value}-$scalaVersionMajor-${version.value}-assembly.jar"
},
target in assembly := baseDirectory.value.getParentFile / "target" / scalaVersionMajor
)
val shaded = Project(
id = "gearpump-shaded",
base = file("shaded")
).aggregate(shaded_akka_kryo, shaded_gs_collections, shaded_guava, shaded_metrics_graphite)
.disablePlugins(sbtassembly.AssemblyPlugin)
lazy val shaded_akka_kryo = Project(
id = "gearpump-shaded-akka-kryo",
base = file("shaded/akka-kryo"),
settings = shadeAssemblySettings ++
Seq(
assemblyShadeRules in assembly := Seq(
ShadeRule.zap("com.google.protobuf.**").inAll,
ShadeRule.zap("com.typesafe.config.**").inAll,
ShadeRule.zap("akka.**").inAll,
ShadeRule.zap("org.jboss.netty.**").inAll,
ShadeRule.zap("net.jpountz.lz4.**").inAll,
ShadeRule.zap("org.uncommons.maths.**").inAll,
ShadeRule.rename("com.romix.**" -> "org.apache.gearpump.romix.@1").inAll,
ShadeRule.rename("com.esotericsoftware.**" ->
"org.apache.gearpump.esotericsoftware.@1").inAll,
ShadeRule.rename("org.objenesis.**" -> "org.apache.gearpump.objenesis.@1").inAll
)
) ++
Seq(
libraryDependencies ++= Seq(
"com.github.romix.akka" %% "akka-kryo-serialization" % kryoVersion
)
)
)
lazy val shaded_gs_collections = Project(
id = "gearpump-shaded-gs-collections",
base = file("shaded/gs-collections"),
settings = shadeAssemblySettings ++
Seq(
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.gs.collections.**" ->
"org.apache.gearpump.gs.collections.@1").inAll
)
) ++
Seq(
libraryDependencies ++= Seq(
"com.goldmansachs" % "gs-collections" % gsCollectionsVersion
)
)
)
lazy val shaded_guava = Project(
id = "gearpump-shaded-guava",
base = file("shaded/guava"),
settings = shadeAssemblySettings ++
Seq(
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.google.**" -> "org.apache.gearpump.google.@1").inAll
)
) ++
Seq(
libraryDependencies ++= Seq(
"com.google.guava" % "guava" % guavaVersion
)
)
)
lazy val shaded_metrics_graphite = Project(
id = "gearpump-shaded-metrics-graphite",
base = file("shaded/metrics-graphite"),
settings = shadeAssemblySettings ++
Seq(
assemblyShadeRules in assembly := Seq(
ShadeRule.rename("com.codahale.metrics.**" ->
"org.apache.gearpump.codahale.metrics.@1").inAll
)
) ++
Seq(
libraryDependencies ++= Seq(
"com.codahale.metrics" % "metrics-graphite" % codahaleVersion,
"com.codahale.metrics" % "metrics-jvm" % codahaleVersion
)
)
)
def getShadedJarFile(name: String, gearpumpVersion: String): File = {
shaded.base / "target" / scalaVersionMajor /
s"gearpump-shaded-$name-$scalaVersionMajor-$gearpumpVersion-assembly.jar"
}
}