diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cff0905a..5141aff5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -95,11 +95,11 @@ jobs: - name: Make target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: mkdir -p refined/target shared/target tensorflow/target parquet/target tools/target protobuf/target jmh/target bigquery/target avro/target scalacheck/target datastore/target neo4j/target cats/target bigtable/target guava/target project/target + run: mkdir -p bom/target refined/target shared/target tensorflow/target parquet/target tools/target protobuf/target jmh/target bigquery/target avro/target scalacheck/target datastore/target neo4j/target cats/target bigtable/target guava/target project/target - name: Compress target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') - run: tar cf targets.tar refined/target shared/target tensorflow/target parquet/target tools/target protobuf/target jmh/target bigquery/target avro/target scalacheck/target datastore/target neo4j/target cats/target bigtable/target guava/target project/target + run: tar cf targets.tar bom/target refined/target shared/target tensorflow/target parquet/target tools/target protobuf/target jmh/target bigquery/target avro/target scalacheck/target datastore/target neo4j/target cats/target bigtable/target guava/target project/target - name: Upload target directories if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v') || github.ref == 'refs/heads/main') diff --git a/build.sbt b/build.sbt index 989e25cf..39038a3e 100644 --- a/build.sbt +++ b/build.sbt @@ -326,6 +326,7 @@ lazy val root = tlCrossRootProject avro, bigquery, bigtable, + bom, cats, datastore, guava, @@ -340,6 +341,37 @@ lazy val root = tlCrossRootProject tools ) +lazy val bom = project + .in(file("bom")) + .enablePlugins(BillOfMaterialsPlugin) + .disablePlugins(TypelevelSettingsPlugin) + .settings( + // Just one BOM including all cross Scala versions + crossVersion := CrossVersion.disabled, + // Create BOM in the first run + crossScalaVersions := Seq(scalaDefault), + moduleName := "magnolify-bom", + bomIncludeProjects := Seq( + avro, + bigquery, + bigtable, + cats, + datastore, + guava, + parquet, + protobuf, + refined, + scalacheck, + shared, + tensorflow, + neo4j, + tools + ), + // only releases after 0.7.4 + tlMimaPreviousVersions := tlMimaPreviousVersions.value + .filter(v => VersionNumber(v).numbers.last >= 4) + ) + lazy val shared = project .in(file("shared")) .settings( diff --git a/project/plugins.sbt b/project/plugins.sbt index 10d586c2..062743dc 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,6 +1,7 @@ addSbtPlugin("com.github.sbt" % "sbt-ghpages" % "0.8.0") addSbtPlugin("com.github.sbt" % "sbt-site-paradox" % "1.7.0") addSbtPlugin("com.github.sbt" % "sbt-unidoc" % "0.5.0") +addSbtPlugin("com.lightbend.sbt" % "sbt-bill-of-materials" % "1.0.2") addSbtPlugin("com.lightbend.paradox" % "sbt-paradox" % "0.10.7") addSbtPlugin("com.thesamet" % "sbt-protoc" % "1.0.7") addSbtPlugin("com.github.sbt" % "sbt-paradox-material-theme" % "0.7.0")