Abhängigkeiten in Java angeben

Sie können jede Java-kompatible Bibliothek mit einer unterstützten Java-Laufzeit verwenden, um Cloud Run Functions in Java zu schreiben. Sie können entweder Maven oder Gradle verwenden, um Abhängigkeiten für Ihre Java Cloud Run Functions zu verwalten.

Abhängigkeiten deklarieren und verwalten

Sie können Abhängigkeiten mit Maven oder Gradle deklarieren und verwalten:

  • So verwalten Sie Abhängigkeiten mit Maven:

    • Geben Sie die Abhängigkeiten im Abschnitt <dependencies> in der Datei pom.xml Ihres Projekts an.

    • Sie können den Maven-Wrapper verwenden, um die Abhängigkeit Ihres Projekts von Maven selbst zu verwalten. Wenn Sie den Maven-Wrapper nicht verwenden, verwenden Cloud Run Functions standardmäßig eine aktuelle Version von Maven, wenn Sie gcloud functions deploy ausführen.

  • Wenn Sie Abhängigkeiten mit Gradle verwalten möchten, müssen Sie diese in der Datei build.gradle Ihres Projekts angeben.

Das Functions Framework ist eine erforderliche Abhängigkeit für alle Funktionen. Obwohl Cloud Run-Funktionen sie bei der Erstellung der Funktion für Sie installiert, empfehlen wir, sie zur Klarstellung hinzuzufügen.

Wenn Ihre Funktion private Abhängigkeiten benötigt, sollten Sie functions-framework in Ihre private Registry spiegeln. Fügen Sie die gespiegelte functions-framework als Abhängigkeit zu Ihrer Funktion hinzu, um die Installation des Pakets aus dem öffentlichen Internet zu vermeiden.

Google Cloud-Clientbibliotheken für Java verwenden

Google Cloud-Clientbibliotheken für Java bieten idiomatischen Zugriff auf Google Cloud-Dienste. Wenn Sie eine Bibliothek verwenden möchten, müssen Sie sie als Abhängigkeit deklarieren.

Normalerweise deklarieren Sie Abhängigkeiten nur von den Bibliotheken, die Ihre Funktion benötigt. Beispiel:

Maven

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example.functions</groupId>
  <artifactId>functions-hello-world</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <properties>
    <maven.compiler.target>11</maven.compiler.target>
    <maven.compiler.source>11</maven.compiler.source>
  </properties>

  <dependencies>
    <!-- Required for Function primitives -->
    <dependency>
      <groupId>com.google.cloud.functions</groupId>
      <artifactId>functions-framework-api</artifactId>
      <version>1.1.0</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <!--
          Google Cloud Functions Framework Maven plugin

          This plugin allows you to run Cloud Functions Java code
          locally. Use the following terminal command to run a
          given function locally:

          mvn function:run -Drun.functionTarget=your.package.yourFunction
        -->
        <groupId>com.google.cloud.functions</groupId>
        <artifactId>function-maven-plugin</artifactId>
        <version>0.11.0</version>
        <configuration>
          <functionTarget>functions.HelloWorld</functionTarget>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

Gradle

Die Datei build.gradle enthält eine benutzerdefinierte Aufgabe, damit Sie Funktionen lokal ausführen können. Weitere Informationen zu lokalen Tests finden Sie unter Ihre erste Funktion: Java.

apply plugin: 'java'

repositories {
  jcenter()
  mavenCentral()
}
configurations {
    invoker
}

dependencies {
  // Every function needs this dependency to get the Functions Framework API.
  compileOnly 'com.google.cloud.functions:functions-framework-api:1.1.0'

  // To run function locally using Functions Framework's local invoker
  invoker 'com.google.cloud.functions.invoker:java-function-invoker:1.3.1'

  // These dependencies are only used by the tests.
  testImplementation 'com.google.cloud.functions:functions-framework-api:1.1.0'
  testImplementation 'junit:junit:4.13.2'
  testImplementation 'com.google.truth:truth:1.4.0'
  testImplementation 'org.mockito:mockito-core:5.10.0'

}

// Register a "runFunction" task to run the function locally
tasks.register("runFunction", JavaExec) {
  main = 'com.google.cloud.functions.invoker.runner.Invoker'
  classpath(configurations.invoker)
  inputs.files(configurations.runtimeClasspath, sourceSets.main.output)
  args(
    '--target', project.findProperty('run.functionTarget') ?: '',
    '--port', project.findProperty('run.port') ?: 8080
  )
  doFirst {
    args('--classpath', files(configurations.runtimeClasspath, sourceSets.main.output).asPath)
  }
}