sbtを使用したScalaハンドラーコードのパッケージ化¶
Scalaビルドツール(sbt)を使用して、コードをアセンブリ JAR として構築およびパッケージ化できます。 sbt-assemblyプラグイン を使用して、すべての依存関係を含む JAR ファイルを作成できます。
JAR ファイルを作成したら、そのファイルをSnowflakeステージにアップロードして、関数またはプロシージャの作成に使用する CREATE FUNCTION または CREATE PROCEDURE ステートメント内の IMPORTS パラメーターでそのファイルを参照できます。JAR ファイルのアップロードの詳細については、 コードで依存関係を利用できるようにする方法 をご参照ください。コードをインラインに配置するかステージ上に配置するかの選択の詳細については、 ハンドラーコードのインラインまたはステージ上での保持 をご参照ください。
ハンドラーコードを含むアセンブリ JAR ファイルを作成するには、次のステップを実行します。
build.sbt
ファイルを含むディレクトリで、project/
サブディレクトリにplugins.sbt
という名前のファイルを作成します。たとえば、
build.sbt
ファイルを含むディレクトリがhello-snowpark/
の場合は、ファイルhello-snowpark/project/plugins.sbt
を作成します。hello-snowpark/ |-- build.sbt |-- project/ |-- plugins.sbt
plugins.sbt
ファイルに、次の行を追加します。addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "1.1.0")
これにより、 sbt-assemblyプラグイン がプロジェクトに追加されます。
プロジェクトで同じライブラリの複数のバージョンが必要な場合(例: プロジェクトが、異なるバージョンの3番目のライブラリを必要とする、2つのライブラリに依存している場合)、依存関係を解決するために
build.sbt
ファイルでマージ戦略を定義します。詳細については、 マージ戦略 をご参照ください。プロジェクトでSnowparkライブラリが必要な場合は、以下に示すように、
build.sbt
ファイル内でlibraryDependencies
を使用してそれを参照します。必ず、少なくとも 必要な最小バージョン を使用してください。SnowparkライブラリはSnowflakeに含まれているため、依存関係が
"provided"
であることを指定して、 JAR ファイルから除外します。libraryDependencies += "com.snowflake" % "snowpark" % "1.1.0" % "provided"
プロジェクトのディレクトリ(例:
hello-snowpark
)に移動し、次のコマンドを実行します。sbt assembly
注釈
エラー
Not a valid command: assembly
、Not a valid project ID: assembly
、またはNot a valid key: assembly
が発生した場合は、plugins.sbt
ファイルがproject/
という名前のサブディレクトリにあることを確認してください(ステップ1で説明のとおり)。このコマンドは、次の場所に JAR ファイルを作成します。
target/scala-<version>/<project-name>-assembly-1.0.jar