■ はじめに
https://dk521123.hatenablog.com/entry/2023/03/22/000000
の続き。 build.sbt の書き方について、メモ。
目次
【1】libraryDependencies 1)% "test" 2)% "provided" 3)%% 【2】excludeDependencies 【3】resolvers 補足:ivyとは? 【4】addCommandAlias 1)構文 2)使用例 【5】scalacOptions 1)-deprecation 2)-feature 3)-language.implicitConversions 4)-Ywarn-unused:imports 5)-Ywarn-value-discard
【1】libraryDependencies
* 依存関係を追加
例
// 単一ライブラリを追加する libraryDependencies ++= 依存性ライブラリ情報 // 複数ライブラリを纏めて追加する libraryDependencies ++= Seq( 依存性ライブラリ情報1, 依存性ライブラリ情報2, ... )
例
libraryDependencies ++= Seq( // "グループID" % "アーティファクトID" % "バージョン" % "コンフィグレーション" "com.amazonaws" % "AWSGlueETL" % "4.0.0" % "provided", "software.amazon.awssdk" % "s3" % "2.20.30", "software.amazon.awssdk" % "kms" % "2.20.30", "software.amazon.awssdk" % "ses" % "2.20.30", "org.scalatest" %% "scalatest" % "3.0.8" % "test" )
1)% "test"
* テスト時のみ依存を追加
2)% "provided"
* 本番環境ではライブラリがインストールされているので不要だが、 ローカル環境でのみ適用したい依存ライブラリの場合に付与
3)%%
* Scala バージョン * 例えば、scala-stm_2.12 (2.12:Scalaバージョン) を指定した場合 2.12の部分を「%%」と書くことができる
例
libraryDependencies += "org.scala-stm" % "scala-stm_2.12" % "0.9.1" libraryDependencies += "org.scala-stm" %% "scala-stm" % "0.9.1"
【2】excludeDependencies
* 不要な依存を除外
例
excludeDependencies ++= Seq( ExclusionRule("javax.ws.rs", "javax.ws.rs-api"), )
【3】resolvers
https://www.scala-sbt.org/1.x/docs/ja/Library-Dependencies.html#Resolvers
より抜粋 ~~~~~~~~~~~~~~~~ Resolvers 全てのパッケージが一つのサーバに置いてあるとは限らない。 sbt は、デフォルトで Maven の標準リポジトリ(訳注:Maven Central Repository)を使う。 もし依存ライブラリがデフォルトのリポジトリに存在しないなら、 Ivy がそれを見つけられるよう resolver を追加する必要がある。 ~~~~~~~~~~~~~~~~
例
resolvers ++= Seq( "aws-glue-etl-artifacts" at "https://aws-glue-etl-artifacts.s3.amazonaws.com/release/" )
補足:ivyとは?
* 依存管理のライブラリ
https://blog.shibayu36.org/entry/2018/03/28/193000
【4】addCommandAlias
* addCommandAliasにより、 sbtコマンドを組み合わせて、エイリアスを定義できる => sbtコマンドについては、以下の関連記事を参照のこと
SBT ~ 基本編 / sbtコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/26/000000
1)構文
addCommandAlias( "【エイリアス】", // Clean-Compile ";【SBTコマンド1】 ;【SBTコマンド2】 ;..." )
2)使用例
addCommandAlias( "cc", // Clean-Compile ";clean ;compile" )
コマンド
# これにより、「sbt clean」-> 「sbt compile」が実行されることになる sbt cc
【5】scalacOptions
* Scalaコンパイラ「scalac」のオプション設定
https://docs.scala-lang.org/overviews/compiler-options/index.html
* 以下のサイトも参照しておいた方がよさそう
https://qiita.com/kawachi/items/1c1d063de91c5445e8bc?_fsi=gjrUYGwN
https://eed3si9n.com/ja/stricter-scala-with-xlint-xfatal-warnings-and-scalafix/
1)-deprecation
* 非推奨APIの警告を詳細に教えてくれる
2)-feature
* 暗黙的にScala機能を使っていた場合に警告して詳細に教えてくれる
3)-language.implicitConversions
* 暗黙の型変換を定義する際に「import scala.language.implicitConversions」 しないと警告が出るが、これを指定すると警告が表示されなくなる
4)-Ywarn-unused:imports
* 使っていない import文 があった場合、警告
5)-Ywarn-value-discard
* Unit型なのに、値を変換しているようなコードがあった場合、警告
例
def add(x1: Int, x2: Int): Unit = x1 + x2
関連記事
SBT ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/22/000000
SBT ~ 基本編 / sbtコマンド ~
https://dk521123.hatenablog.com/entry/2023/01/26/000000
SBT ~ sbtプラグイン ~
https://dk521123.hatenablog.com/entry/2023/01/25/000000
SBTでのエラー/警告対応
https://dk521123.hatenablog.com/entry/2023/04/06/093458
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331