Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,21 +23,21 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
scala: [3.6.4, 2.12.21]
java: [temurin@11]
scala: [3.8.4, 2.12.21]
java: [temurin@17]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout current branch (full)
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Setup Java (temurin@11)
if: matrix.java == 'temurin@11'
- name: Setup Java (temurin@17)
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 11
java-version: 17
cache: sbt

- name: Setup sbt
Expand Down Expand Up @@ -68,32 +68,32 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest]
scala: [3.6.4]
java: [temurin@11]
scala: [3.8.4]
java: [temurin@17]
runs-on: ${{ matrix.os }}
steps:
- name: Checkout current branch (full)
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Setup Java (temurin@11)
if: matrix.java == 'temurin@11'
- name: Setup Java (temurin@17)
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: 11
java-version: 17
cache: sbt

- name: Setup sbt
uses: sbt/setup-sbt@v1

- name: Download target directories (3.6.4)
- name: Download target directories (3.8.4)
uses: actions/download-artifact@v8
with:
name: target-${{ matrix.os }}-3.6.4-${{ matrix.java }}
name: target-${{ matrix.os }}-3.8.4-${{ matrix.java }}

- name: Inflate target directories (3.6.4)
- name: Inflate target directories (3.8.4)
run: |
tar xf targets.tar
rm targets.tar
Expand Down
24 changes: 15 additions & 9 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,15 @@ ThisBuild / developers := List(
)

// sbt-github-actions
lazy val scala3 = "3.6.4"
lazy val scala3 = "3.8.4"
lazy val scala212 = "2.12.21"
ThisBuild / scalaVersion := scala3
ThisBuild / crossScalaVersions := Seq(scala3, scala212)
ThisBuild / githubWorkflowBuild := Seq(
WorkflowStep.Sbt(name = Some("Build project"), commands = List("compile", "test", "scripted"))
)
ThisBuild / githubWorkflowTargetBranches := Seq("main")
ThisBuild / githubWorkflowJavaVersions := Seq(JavaSpec.temurin("11"))
ThisBuild / githubWorkflowJavaVersions := Seq(JavaSpec.temurin("17"))
ThisBuild / githubWorkflowTargetTags := Seq("v*")
ThisBuild / githubWorkflowBuildPreamble := Seq(
WorkflowStep.Sbt(
Expand All @@ -61,13 +61,18 @@ ThisBuild / githubWorkflowPublish := Seq(
)

// compilers
ThisBuild / javacOptions ++= Seq("--release", "8")
ThisBuild / scalacOptions ++= Seq("-release", "8")
ThisBuild / javacOptions ++= Seq("--release", "17")
ThisBuild / scalacOptions ++= Seq("-release", "17")

lazy val javaOnlySettings: Seq[Setting[?]] = Seq(
crossPaths := false,
autoScalaLibrary := false,
crossScalaVersions := Seq(scala3)
crossScalaVersions := Seq(scala3),
dependencyOverrides ++= Seq(
// tests are written in scala. pin the library to the compiler version so the transitive
// (older) one from the test framework does not end up alone on the classpath
"org.scala-lang" %% "scala3-library" % scalaVersion.value
)
)

lazy val `sbt-avro-parent`: Project = project
Expand Down Expand Up @@ -106,16 +111,17 @@ lazy val `sbt-avro`: Project = project
.enablePlugins(BuildInfoPlugin, SbtPlugin)
.settings(
description := "Sbt plugin for compiling Avro sources",
addSbtPlugin(Dependencies.SbtPlugin.Sbt2Compat),
(pluginCrossBuild / sbtVersion) := {
scalaBinaryVersion.value match {
case "2.12" => "1.5.0"
case _ => "2.0.0-M3"
case "2.12" => "1.9.0"
case _ => "2.0.0"
}
},
scriptedSbt := {
scalaBinaryVersion.value match {
case "2.12" => "1.10.7"
case _ => "2.0.0-M3"
case "2.12" => "1.13.0"
case _ => "2.0.0"
}
},
buildInfoKeys := Seq[BuildInfoKey](name, version),
Expand Down
14 changes: 0 additions & 14 deletions plugin/src/main/scala-2.12/com/github/sbt/avro/PluginCompat.scala

This file was deleted.

14 changes: 0 additions & 14 deletions plugin/src/main/scala-3/com/github/sbt/avro/PluginCompat.scala

This file was deleted.

20 changes: 11 additions & 9 deletions plugin/src/main/scala/com/github/sbt/avro/SbtAvro.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ package com.github.sbt.avro
import sbt.Keys.*
import sbt.{*, given}
import Path.relativeTo
import PluginCompat.*
import sbt.ScopeFilter.ProjectFilter
import sbt.librarymanagement.DependencyFilter
import sbtcompat.PluginCompat.*

import java.io.File

Expand Down Expand Up @@ -63,7 +63,7 @@ object SbtAvro extends AutoPlugin {

// addArtifact doesn't take publishArtifact setting in account
artifacts ++= Classpaths.artifactDefs(avroArtifactTasks).value,
packagedArtifacts ++= Classpaths.packaged(avroArtifactTasks).value,
packagedArtifacts ++= Def.uncached(Classpaths.packaged(avroArtifactTasks).value),
// use a custom folders to avoid potential conflict with other generators
avroProjectIncludeFilter := inDependencies(ThisProject),
avroUnpackDependencies / target := sourceManaged.value / "avro",
Expand Down Expand Up @@ -96,16 +96,18 @@ object SbtAvro extends AutoPlugin {
avroUnpackDependencies / includeFilter := AllPassFilter,
avroUnpackDependencies / excludeFilter := HiddenFileFilter,
avroUnpackDependencies / target := configSrcSub(avroUnpackDependencies / target).value,
avroUnpackDependencies := unpackDependenciesTask(avroUnpackDependencies).value,
avroUnpackDependencies := Def.uncached(unpackDependenciesTask(avroUnpackDependencies).value),
// source generation
avroGenerate / target := configSrcSub(avroGenerate / target).value,
managedSourceDirectories += (avroGenerate / target).value,
avroGenerate := sourceGeneratorTask(avroGenerate)
.dependsOn(avroUnpackDependencies)
.dependsOn(avroUnpackDependencies.?.all(filterDependsOn))
.value,
avroGenerate := Def.uncached(
sourceGeneratorTask(avroGenerate)
.dependsOn(avroUnpackDependencies)
.dependsOn(avroUnpackDependencies.?.all(filterDependsOn))
.value
),
sourceGenerators += avroGenerate.taskValue,
compile := compile.dependsOn(avroGenerate).value,
compile := compile.dependsOn(Def.uncached(avroGenerate)).value,
// packaging
packageAvro / artifactClassifier := Some(AvroClassifier),
packageAvro / publishArtifact := false
Expand Down Expand Up @@ -148,7 +150,7 @@ object SbtAvro extends AutoPlugin {
): Seq[File] = {
def cachedExtractDep(jar: File): Seq[File] = {
val cached = FileFunction.cached(
cacheBaseDirectory / jar.name,
cacheBaseDirectory / jar.getName,
inStyle = FilesInfo.lastModified,
outStyle = FilesInfo.exists
) { deps =>
Expand Down
5 changes: 5 additions & 0 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ object Dependencies {
object Versions {
val Avro = "1.12.2"
val Specs2 = "4.23.0"
val Sbt2Compat = "0.2.0"
}

object Provided {
Expand All @@ -15,4 +16,8 @@ object Dependencies {
val Specs2Core = "org.specs2" %% "specs2-core" % Versions.Specs2 % "test"
val AvroCompiler = "org.apache.avro" % "avro-compiler" % Versions.Avro % "test"
}

object SbtPlugin {
val Sbt2Compat = "com.github.sbt" % "sbt2-compat" % Versions.Sbt2Compat
}
}