set module name to match what we have in our docs (#88)
* set module name to match what we have in our docs
refactor
* scalafmt
diff --git a/build.sbt b/build.sbt
index 9262772..92d79d1 100644
--- a/build.sbt
+++ b/build.sbt
@@ -31,10 +31,8 @@
.settings(headerSettings(IntegrationTest))
.settings(Defaults.itSettings)
.settings(Dependencies.core)
- .settings(
- name := "pekko-projection-core",
- Compile / packageBin / packageOptions += Package.ManifestAttributes(
- "Automatic-Module-Name" -> "pekko.projection.core"))
+ .settings(AutomaticModuleName.settings("pekko.projection.core"))
+ .settings(name := "pekko-projection-core")
.settings(Protobuf.settings)
lazy val coreTest =
@@ -59,8 +57,8 @@
.settings(headerSettings(IntegrationTest))
.settings(Defaults.itSettings)
.settings(Dependencies.testKit)
- .settings(
- name := "pekko-projection-testkit")
+ .settings(AutomaticModuleName.settings("pekko.projection.testkit"))
+ .settings(name := "pekko-projection-testkit")
.dependsOn(core)
// provides offset storage backed by a JDBC table
@@ -72,8 +70,8 @@
.settings(headerSettings(IntegrationTest))
.settings(Defaults.itSettings)
.settings(Dependencies.jdbc)
- .settings(
- name := "pekko-projection-jdbc")
+ .settings(AutomaticModuleName.settings("pekko.projection.jdbc"))
+ .settings(name := "pekko-projection-jdbc")
.dependsOn(core)
.dependsOn(coreTest % "test->test")
.dependsOn(testkit % Test)
@@ -87,8 +85,8 @@
.settings(headerSettings(IntegrationTest))
.settings(Defaults.itSettings)
.settings(Dependencies.slick)
- .settings(
- name := "pekko-projection-slick")
+ .settings(AutomaticModuleName.settings("pekko.projection.slick"))
+ .settings(name := "pekko-projection-slick")
.dependsOn(jdbc)
.dependsOn(core)
.dependsOn(coreTest % "test->test")
@@ -103,8 +101,8 @@
.settings(headerSettings(IntegrationTest))
.settings(Defaults.itSettings)
.settings(Dependencies.cassandra)
- .settings(
- name := "pekko-projection-cassandra")
+ .settings(AutomaticModuleName.settings("pekko.projection.cassandra"))
+ .settings(name := "pekko-projection-cassandra")
.dependsOn(core)
// strictly speaking it is not needed to have test->test here.
// Cassandra module doesn't have tests, only integration tests
@@ -118,8 +116,8 @@
.enablePlugins(ReproducibleBuildsPlugin)
.settings(crossScalaVersions := Dependencies.Scala2And3Versions)
.settings(Dependencies.eventsourced)
- .settings(
- name := "pekko-projection-eventsourced")
+ .settings(AutomaticModuleName.settings("pekko.projection.eventsourced"))
+ .settings(name := "pekko-projection-eventsourced")
.dependsOn(core)
.dependsOn(testkit % Test)
@@ -129,8 +127,8 @@
.enablePlugins(ReproducibleBuildsPlugin)
.settings(crossScalaVersions := Dependencies.Scala2And3Versions)
.settings(Dependencies.kafka)
- .settings(
- name := "pekko-projection-kafka")
+ .settings(AutomaticModuleName.settings("pekko.projection.kafka"))
+ .settings(name := "pekko-projection-kafka")
.dependsOn(core)
lazy val kafkaTest =
@@ -155,8 +153,8 @@
.enablePlugins(ReproducibleBuildsPlugin)
.settings(crossScalaVersions := Dependencies.Scala2And3Versions)
.settings(Dependencies.state)
- .settings(
- name := "pekko-projection-durable-state")
+ .settings(AutomaticModuleName.settings("pekko.projection.durable-state"))
+ .settings(name := "pekko-projection-durable-state")
.dependsOn(core)
.dependsOn(testkit % Test)
diff --git a/project/AutomaticModuleName.scala b/project/AutomaticModuleName.scala
new file mode 100644
index 0000000..9123144
--- /dev/null
+++ b/project/AutomaticModuleName.scala
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * license agreements; and to You under the Apache License, version 2.0:
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ *
+ * This file is part of the Apache Pekko project, which was derived from Akka.
+ */
+
+/*
+ * Copyright (C) 2016-2022 Lightbend Inc. <https://www.lightbend.com>
+ */
+
+import sbt.Keys._
+import sbt._
+
+/**
+ * Helper to set Automatic-Module-Name in projects.
+ *
+ * !! DO NOT BE TEMPTED INTO AUTOMATICALLY DERIVING THE NAMES FROM PROJECT NAMES !!
+ *
+ * The names carry a lot of implications and DO NOT have to always align 1:1 with the group ids or package names,
+ * though there should be of course a strong relationship between them.
+ */
+object AutomaticModuleName {
+ private val AutomaticModuleName = "Automatic-Module-Name"
+
+ def settings(name: String): Seq[Def.Setting[Task[Seq[PackageOption]]]] =
+ Seq(Compile / packageBin / packageOptions += Package.ManifestAttributes(AutomaticModuleName -> name))
+}