Packen von Java- oder Scala-Handler-Code mit Maven

Wenn Sie Maven zum Erstellen und Packen Ihres Codes verwenden, können Sie das Maven Assembly Plugin verwenden, um eine JAR-Datei zu erstellen, die alle Abhängigkeiten enthält.

Sobald Sie eine JAR-Datei haben, können Sie die Datei in eine Snowflake-Stagingbereich hochladen und dann beim Erstellen einer Funktion oder Prozedur in einer IMPORTS-Anweisung auf sie verweisen. Weitere Informationen zum Hochladen von JAR-Dateien finden Sie unter Abhängigkeiten für Code zur Verfügung stellen. Weitere Informationen zur Entscheidung, ob der Code inline oder in einem Stagingbereich aufbewahrt werden soll, finden Sie unter Speichern von Handler-Code inline oder in einem Stagingbereich.

Gehen Sie wie folgt vor, um eine JAR-Datei zu erstellen, die Ihren Handler-Code enthält.

  1. Erstellen Sie in dem Verzeichnis Ihres Projekts (z. B. hello-snowpark/) ein Unterverzeichnis mit dem Namen assembly/.

  2. Erstellen Sie in diesem Verzeichnis eine Assembly-Deskriptordatei, die angibt, dass Sie Abhängigkeiten zu Ihrer JAR-Datei hinzufügen möchten.

    Ein Beispiel dazu finden Sie unter jar-with-dependencies.

  3. Wenn Ihr Projekt die Snowpark-Bibliothek benötigt, schließen Sie deren JAR-Datei aus dem Ausgabearchiv aus, da die Bibliothek bereits in Snowflake enthalten ist.

    Fügen Sie im Assembly-Deskriptor ein <dependencySet>-Element hinzu, das die Snowpark-Bibliothek von Ihrer JAR-Datei ausschließt.

    Beispiel:

    <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

    Weitere Informationen zu Elementen in einem Assembly-Deskriptor finden Sie unter Assembly Deskriptor-Format.

  4. Fügen Sie in Ihrer pom.xml-Datei unter <project> » <build> » <plugins> ein <plugin>-Element für das Maven Assembly Plugin hinzu.

    Fügen Sie außerdem unter <configuration> » <descriptors> einen <descriptor> hinzu, der auf die in den vorherigen Schritten erstellte Assembly-Deskriptordatei verweist.

    Beispiel:

    <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