Skip to content

Instantly share code, notes, and snippets.

@Charlyzzz
Created August 26, 2019 17:46
Show Gist options
  • Save Charlyzzz/5f63a35f37418671cffa5ae7f74a1564 to your computer and use it in GitHub Desktop.
Save Charlyzzz/5f63a35f37418671cffa5ae7f74a1564 to your computer and use it in GitHub Desktop.
import com.lightbend.sbt.SbtAspectj.aspectjUseInstrumentedClasses
import com.typesafe.sbt.SbtMultiJvm.MultiJvmKeys.MultiJvm
import com.typesafe.sbt.SbtMultiJvm.multiJvmSettings
import sbtassembly.AssemblyPlugin._
lazy val akkaHttpVersion = "10.1.9"
lazy val akkaVersion = "2.5.24"
lazy val aspectjLintConfig = {
aspectjLintProperties in Aspectj += "invalidAbsoluteTypeName = ignore"
aspectjLintProperties in Aspectj += "adviceDidNotMatch = ignore"
}
lazy val tracing = project
.enablePlugins(SbtAspectj)
.disablePlugins(RevolverPlugin)
.settings(buildSettings)
.settings(aspectjLintConfig)
.settings(
aspectjInputs in Aspectj += (aspectjCompiledClasses in Aspectj).value,
// add akka-actor as an aspectj input (find it in the update report)
aspectjInputs in Aspectj ++= update.value.matching(moduleFilter(organization = "com.typesafe.akka", name = "akka-actor*")),
// replace regular products with compiled aspects
products in Compile := (products in Aspectj).value,
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-actor-typed" % akkaVersion,
"com.typesafe.akka" %% "akka-http" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-http-xml" % akkaHttpVersion,
"com.typesafe.akka" %% "akka-stream" % akkaVersion,
"com.typesafe.akka" %% "akka-cluster" % akkaVersion,
"com.typesafe.akka" %% "akka-cluster-typed" % akkaVersion,
"com.typesafe.akka" %% "akka-cluster-sharding" % akkaVersion,
"javax.inject" % "javax.inject" % "1",
"com.google.inject" % "guice" % "4.0"
)
)
lazy val root = (project in file("."))
.enablePlugins(SbtAspectj, AssemblyPlugin)
.settings(buildSettings)
.settings(assemblySettings: _*)
.settings(
assemblyMergeStrategy in assembly := {
case PathList("META-INF", _*) => MergeStrategy.discard
case "reference.conf" => MergeStrategy.concat
case _ => MergeStrategy.first
}
)
.settings(
exportJars := true,
name := "sharding",
organization := "com.example",
scalaVersion := "2.12.8"
)
.settings(aspectjLintConfig)
.settings(
aspectjBinaries in Aspectj ++= (products in Compile in tracing).value,
// replace the original akka-actor jar with the instrumented classes in runtime
fullClasspath in Runtime := aspectjUseInstrumentedClasses(Runtime).value,
// weave this project's classes
aspectjInputs in Aspectj += (aspectjCompiledClasses in Aspectj).value,
products in Compile := (products in Aspectj).value,
products in Runtime := (products in Compile).value,
)
.settings(aggregate in assembly := false)
.settings(Revolver.enableDebugging(port = 5050, suspend = false))
.aggregate(tracing)
.dependsOn(tracing)
.enablePlugins(MultiJvmPlugin)
.settings(multiJvmSettings: _*)
.configs(MultiJvm)
[IJ]sbt:sharding> run
[info] Packaging C:\Users\Erwin\Documents\Scala\aktors_sharding\tracing\target\scala-2.12\tracing_2.12-0.1.0-SNAPSHOT.jar ...
[error] java.util.zip.ZipException: duplicate entry: META-INF/MANIFEST.MF
[error] at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:232)
[error] at java.util.jar.JarOutputStream.putNextEntry(JarOutputStream.java:109)
[error] at sbt.io.IO$.addFileEntry$1(IO.scala:649)
[error] at sbt.io.IO$.$anonfun$writeZip$3(IO.scala:658)
[error] at sbt.io.IO$.$anonfun$writeZip$3$adapted(IO.scala:658)
[error] at scala.collection.Iterator.foreach(Iterator.scala:937)
[error] at scala.collection.Iterator.foreach$(Iterator.scala:937)
[error] at scala.collection.AbstractIterator.foreach(Iterator.scala:1425)
[error] at scala.collection.IterableLike.foreach(IterableLike.scala:70)
[error] at scala.collection.IterableLike.foreach$(IterableLike.scala:69)
[error] at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
[error] at sbt.io.IO$.writeZip(IO.scala:658)
[error] at sbt.io.IO$.$anonfun$archive$1(IO.scala:612)
[error] at sbt.io.IO$.$anonfun$archive$1$adapted(IO.scala:609)
[error] at sbt.io.IO$.$anonfun$withZipOutput$1(IO.scala:694)
[error] at sbt.io.IO$.$anonfun$withZipOutput$1$adapted(IO.scala:683)
[error] at sbt.io.Using.apply(Using.scala:22)
[error] at sbt.io.IO$.withZipOutput(IO.scala:683)
[error] at sbt.io.IO$.archive(IO.scala:609)
[error] at sbt.io.IO$.jar(IO.scala:588)
[error] at sbt.Package$.makeJar(Package.scala:135)
[error] at sbt.Package$.$anonfun$apply$4(Package.scala:77)
[error] at sbt.Package$.$anonfun$apply$4$adapted(Package.scala:75)
[error] at sbt.util.Tracked$.$anonfun$outputChanged$1(Tracked.scala:101)
[error] at sbt.Package$.apply(Package.scala:86)
[error] at sbt.Defaults$.$anonfun$packageTask$1(Defaults.scala:1199)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:40)
[error] at sbt.std.Transform$$anon$4.work(System.scala:67)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:269)
[error] at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error] at sbt.Execute.work(Execute.scala:278)
[error] at sbt.Execute.$anonfun$submit$1(Execute.scala:269)
[error] at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
[error] at sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
[error] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[error] at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[error] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[error] at java.lang.Thread.run(Thread.java:748)
[IJ]sbt:sharding> [error] (tracing / Compile / packageBin) java.util.zip.ZipException: duplicate entry: META-INF/MANIFEST.MF
[error] Total time: 1 s, completed Aug 26, 2019 2:45:30 PM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment