Mavenを使用したJavaまたはScalaハンドラーコードのパッケージ化

Mavenを使用してコードをビルドおよびパッケージ化する場合は、 Mavenアセンブリプラグイン を使用して、すべての依存関係を含む JAR ファイルを作成できます。

JAR ファイルを取得すると、そのファイルをSnowflakeステージにアップロードし、関数またはプロシージャを作成するときに IMPORTS ステートメントでそのファイルを参照できます。JAR ファイルのアップロードの詳細については、 コードで依存関係を利用できるようにする方法 をご参照ください。コードをインラインに配置するかステージ上に配置するかの選択の詳細については、 ハンドラーコードのインラインまたはステージ上での保持 をご参照ください。

ハンドラーコードを含む JAR ファイルを作成するには、次のステップを実行します。

  1. プロジェクトのディレクトリ(例: hello-snowpark/)に、 assembly/ という名前のサブディレクトリを作成します。

  2. そのディレクトリに、 JAR ファイルに依存関係を含めることを指定する アセンブリ記述子ファイル を作成します。

    例については、 jar-with-dependencies をご参照ください。

  3. プロジェクトにSnowparkライブラリが必要な場合、そのライブラリはすでにSnowflakeに含まれているため、その JAR ファイルを出力アーカイブから除外します。

    アセンブリ記述子で、 JAR ファイルからSnowparkライブラリを除外する <dependentencySet> 要素を追加します。

    例:

    <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
      <id>jar-with-dependencies</id>
      <formats>
         <format>jar</format>
      </formats>
      <includeBaseDirectory>false</includeBaseDirectory>
      <dependencySets>
        <dependencySet>
          <outputDirectory>/</outputDirectory>
          <useProjectArtifact>false</useProjectArtifact>
          <unpack>true</unpack>
          <scope>provided</scope>
          <excludes>
            <exclude>com.snowflake:snowpark</exclude>
          </excludes>
        </dependencySet>
      </dependencySets>
    </assembly>
    
    Copy

    アセンブリ記述子の要素については、 アセンブリ記述子の形式 をご参照ください。

  4. pom.xml ファイルの <プロジェクト> » <ビルド> » <プラグイン> の下に、Mavenアセンブリプラグインの <プラグイン> 要素を追加します。

    さらに、 <構成> » <記述子> の下に、前のステップで作成したアセンブリ記述子ファイルをポイントする <記述子> を追加します。

    例:

    <project>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
            <configuration>
              <descriptors>
                <descriptor>src/assembly/jar-with-dependencies.xml</descriptor>
              </descriptors>
            </configuration>
            [...]
          </plugin>
          [...]
        </plugins>
        [...]
      </build>
      [...]
    </project>
    
    Copy