blob: 77ccf6cb81bf884c33e68f379b34d1a31e1edace [file] [log] [blame]
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you under the Apache License, Version 2.0 (the
// "License"); you may not use this file except in compliance
// with the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing,
// software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
// KIND, either express or implied. See the License for the
// specific language governing permissions and limitations
// under the License.
/////////////////////////////////////////////////////////////////////////////
// Project Settings
/////////////////////////////////////////////////////////////////////////////
name := "dao"
organization := "edu.uci.ics"
version := "1.0.0"
scalaVersion := "2.13.12"
enablePlugins(JavaAppPackaging)
// Enable semanticdb for Scalafix
ThisBuild / semanticdbEnabled := true
ThisBuild / semanticdbVersion := scalafixSemanticdb.revision
// Manage dependency conflicts by always using the latest revision
ThisBuild / conflictManager := ConflictManager.latestRevision
// Restrict parallel execution of tests to avoid conflicts
Global / concurrentRestrictions += Tags.limit(Tags.Test, 1)
/////////////////////////////////////////////////////////////////////////////
// Compiler Options
/////////////////////////////////////////////////////////////////////////////
// Scala compiler options
Compile / scalacOptions ++= Seq(
"-Xelide-below", "WARNING", // Turn on optimizations with "WARNING" as the threshold
"-feature", // Check feature warnings
"-deprecation", // Check deprecation warnings
"-Ywarn-unused:imports" // Check for unused imports
)
/////////////////////////////////////////////////////////////////////////////
// ScalaPB Configuration
/////////////////////////////////////////////////////////////////////////////
// Exclude some proto files
PB.generate / excludeFilter := "scalapb.proto"
// Set the protoc version for ScalaPB
ThisBuild / PB.protocVersion := "3.19.4"
// ScalaPB code generation for .proto files
Compile / PB.targets := Seq(
scalapb.gen(singleLineToProtoString = true) -> (Compile / sourceManaged).value
)
// Mark the ScalaPB-generated directory as a generated source root
Compile / managedSourceDirectories += (Compile / sourceManaged).value
// ScalaPB library dependencies
libraryDependencies ++= Seq(
"com.thesamet.scalapb" %% "scalapb-runtime" % scalapb.compiler.Version.scalapbVersion % "protobuf",
"com.thesamet.scalapb" %% "scalapb-json4s" % "0.12.0" // For ScalaPB 0.11.x
)
// Enable protobuf compilation in Test
Test / PB.protoSources += PB.externalSourcePath.value
/////////////////////////////////////////////////////////////////////////////
// Test-related Dependencies
/////////////////////////////////////////////////////////////////////////////
libraryDependencies ++= Seq(
"org.scalamock" %% "scalamock" % "5.2.0" % Test, // ScalaMock
"org.scalatest" %% "scalatest" % "3.2.15" % Test, // ScalaTest
"junit" % "junit" % "4.13.2" % Test, // JUnit
"com.novocode" % "junit-interface" % "0.11" % Test, // SBT interface for JUnit
"io.zonky.test" % "embedded-postgres" % "2.1.0" % Test // For mock postgres DB
)
/////////////////////////////////////////////////////////////////////////////
// Jooq-related Dependencies
/////////////////////////////////////////////////////////////////////////////
libraryDependencies ++= Seq(
"org.jooq" % "jooq" % "3.16.10",
"org.jooq" % "jooq-codegen" % "3.16.10"
)
/////////////////////////////////////////////////////////////////////////////
// Additional Dependencies
/////////////////////////////////////////////////////////////////////////////
libraryDependencies ++= Seq(
"org.postgresql" % "postgresql" % "42.7.4",
"com.typesafe" % "config" % "1.4.3" // config reader
)