blob: e442b1a4c81c085ac3aafbfe28a8945e91138fa8 [file] [log] [blame]
/*
* 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.
*/
import net.bzzt.reproduciblebuilds.ReproducibleBuildsPlugin.reproducibleBuildsCheckResolver
import com.github.pjfanning.pekkobuild._
import com.typesafe.tools.mima.core.{ Problem, ProblemFilters }
import ProjectSettings.commonSettings
sourceDistName := "apache-pekko-connectors-kafka"
sourceDistIncubating := false
ThisBuild / reproducibleBuildsCheckResolver := Resolver.ApacheMavenStagingRepo
addCommandAlias("verifyCodeStyle", "scalafmtCheckAll; scalafmtSbtCheck; +headerCheckAll; javafmtCheckAll")
addCommandAlias("applyCodeStyle", "+headerCreateAll; scalafmtAll; scalafmtSbt; javafmtAll")
addCommandAlias("verifyDocs", ";+doc ;unidoc ;docs/paradoxBrowse")
val mimaCompareVersion = "1.0.0"
lazy val `pekko-connectors-kafka` =
project
.in(file("."))
.enablePlugins(ScalaUnidocPlugin)
.disablePlugins(SitePlugin, MimaPlugin)
.settings(commonSettings)
.settings(
name := "pekko-connectors-kafka-root",
publish / skip := true,
ScalaUnidoc / unidoc / unidocProjectFilter := inProjects(core, testkit, `cluster-sharding`),
onLoadMessage := ProjectSettings.onLoadMessage)
.aggregate(core, testkit, `cluster-sharding`, tests, `java-tests`, benchmarks, docs)
lazy val core = project
.enablePlugins(ReproducibleBuildsPlugin)
.disablePlugins(SitePlugin)
.settings(commonSettings)
.settings(VersionGenerator.settings)
.addPekkoModuleDependency("pekko-stream", "", PekkoCoreDependency.default)
.addPekkoModuleDependency("pekko-discovery", "provided", PekkoCoreDependency.default)
.settings(
name := "pekko-connectors-kafka",
AutomaticModuleName.settings("org.apache.pekko.kafka"),
libraryDependencies ++= Dependencies.coreDependencies,
mimaPreviousArtifacts := Set(
organization.value %% name.value % mimaCompareVersion),
mimaBinaryIssueFilters += ProblemFilters.exclude[Problem]("org.apache.pekko.kafka.internal.*"))
lazy val testkit = project
.dependsOn(core)
.enablePlugins(ReproducibleBuildsPlugin)
.disablePlugins(SitePlugin)
.settings(commonSettings)
.addPekkoModuleDependency("pekko-stream-testkit", "", PekkoCoreDependency.default)
.settings(
name := "pekko-connectors-kafka-testkit",
AutomaticModuleName.settings("org.apache.pekko.kafka.testkit"),
JupiterKeys.junitJupiterVersion := "5.11.2",
libraryDependencies ++= Dependencies.testKitDependencies,
libraryDependencies ++= Seq(
"org.junit.jupiter" % "junit-jupiter-api" % JupiterKeys.junitJupiterVersion.value % Provided),
mimaPreviousArtifacts := Set(
organization.value %% name.value % mimaCompareVersion),
mimaBinaryIssueFilters += ProblemFilters.exclude[Problem]("org.apache.pekko.kafka.testkit.internal.*"))
lazy val `cluster-sharding` = project
.in(file("./cluster-sharding"))
.dependsOn(core)
.enablePlugins(ReproducibleBuildsPlugin)
.disablePlugins(SitePlugin)
.settings(commonSettings)
.addPekkoModuleDependency("pekko-cluster-sharding-typed", "", PekkoCoreDependency.default)
.settings(
name := "pekko-connectors-kafka-cluster-sharding",
AutomaticModuleName.settings("org.apache.pekko.kafka.cluster.sharding"),
AddMetaInfLicenseFiles.clusterShardingSettings,
mimaPreviousArtifacts := Set(
organization.value %% name.value % mimaCompareVersion))
lazy val tests = project
.dependsOn(core, testkit, `cluster-sharding`)
.disablePlugins(MimaPlugin, SitePlugin)
.configs(IntegrationTest.extend(Test))
.settings(inConfig(IntegrationTest)(JavaFormatterPlugin.toBeScopedSettings))
.settings(commonSettings)
.settings(Defaults.itSettings)
.settings(headerSettings(IntegrationTest))
.addPekkoModuleDependency("pekko-discovery", "test", PekkoCoreDependency.default)
.addPekkoModuleDependency("pekko-slf4j", "test", PekkoCoreDependency.default)
.settings(
name := "pekko-connectors-kafka-tests",
resolvers ++= ResolverSettings.testSpecificResolvers,
libraryDependencies ++= Dependencies.testDependencies,
publish / skip := true,
Test / fork := true,
Test / parallelExecution := false,
IntegrationTest / parallelExecution := false)
lazy val `java-tests` = project
.dependsOn(core, testkit, `cluster-sharding`, tests % "compile->compile;test->test")
.disablePlugins(MimaPlugin, SitePlugin)
.settings(commonSettings)
.addPekkoModuleDependency("pekko-discovery", "test", PekkoCoreDependency.default)
.addPekkoModuleDependency("pekko-slf4j", "test", PekkoCoreDependency.default)
.settings(
name := "pekko-connectors-kafka-java-tests",
resolvers ++= ResolverSettings.testSpecificResolvers,
libraryDependencies ++= Dependencies.testDependencies,
libraryDependencies ++= Seq(
"org.junit.vintage" % "junit-vintage-engine" % JupiterKeys.junitVintageVersion.value % Test,
"net.aichler" % "jupiter-interface" % JupiterKeys.jupiterVersion.value % Test),
publish / skip := true,
Test / compileOrder := CompileOrder.ScalaThenJava,
Test / fork := true,
Test / parallelExecution := false,
IntegrationTest / parallelExecution := false)
lazy val docs = project
.enablePlugins(ParadoxPlugin, PekkoParadoxPlugin, ParadoxSitePlugin, PreprocessPlugin)
.disablePlugins(MimaPlugin)
.settings(commonSettings)
.settings(
name := "Apache Pekko Kafka Connector",
publish / skip := true,
Compile / paradox / name := "Pekko",
makeSite := makeSite.dependsOn(LocalRootProject / ScalaUnidoc / doc).value,
previewPath := (Paradox / siteSubdirName).value,
Global / pekkoParadoxIncubatorNotice := None,
Preprocess / siteSubdirName := s"api/pekko-connectors-kafka/${projectInfoVersion.value}",
Preprocess / sourceDirectory := (LocalRootProject / ScalaUnidoc / unidoc / target).value,
Preprocess / preprocessRules := Seq(
("\\.java\\.scala".r, _ => ".java"),
("https://javadoc\\.io/page/".r, _ => "https://javadoc\\.io/static/"),
// bug in Scaladoc
("https://docs\\.oracle\\.com/en/java/javase/11/docs/api/java.base/java/time/Duration\\$.html".r,
_ => "https://docs\\.oracle\\.com/en/java/javase/11/docs/api/java.base/java/time/Duration.html"),
// Add Java module name https://github.com/ThoughtWorksInc/sbt-api-mappings/issues/58
("https://docs\\.oracle\\.com/en/java/javase/11/docs/api/".r,
_ => "https://docs\\.oracle\\.com/en/java/javase/11/docs/api/")),
Paradox / siteSubdirName := s"docs/pekko-connectors-kafka/${projectInfoVersion.value}",
ParadoxSettings.settings)
lazy val benchmarks = project
.dependsOn(core, testkit)
.disablePlugins(MimaPlugin, SitePlugin)
.configs(IntegrationTest)
.settings(inConfig(IntegrationTest)(JavaFormatterPlugin.toBeScopedSettings))
.settings(commonSettings)
.settings(Defaults.itSettings)
.settings(headerSettings(IntegrationTest))
.addPekkoModuleDependency("pekko-slf4j", "it", PekkoCoreDependency.default)
.addPekkoModuleDependency("pekko-stream-testkit", "it", PekkoCoreDependency.default)
.settings(
name := "pekko-connectors-kafka-benchmarks",
publish / skip := true,
IntegrationTest / parallelExecution := false,
libraryDependencies ++= Dependencies.benchmarkDependencies)