Specifica le dipendenze in Java

Puoi utilizzare qualsiasi libreria compatibile con Java con un runtime Java supportato per scrivere Cloud Functions in Java. Puoi utilizzare Maven o Gradle per gestire le dipendenze per le tue funzioni Cloud Functions Java.

Dichiarazione e gestione delle dipendenze

Puoi dichiarare e gestire le dipendenze utilizzando Maven o Gradle:

  • Per gestire le dipendenze utilizzando Maven:

    • Specifica le dipendenze nella sezione <dependencies> all'interno del file pom.xml del progetto.

    • Per gestire la dipendenza del progetto da Maven, puoi utilizzare il wrapper Maven. Se non utilizzi il wrapper Maven, per impostazione predefinita Cloud Functions utilizza una versione recente di Maven durante l'esecuzione di gcloud functions deploy.

  • Per gestire le dipendenze utilizzando Gradle, devi specificare le dipendenze nel file build.gradle del progetto.

Il framework delle funzioni è una dipendenza obbligatoria per tutte le funzioni. Anche se Cloud Functions la installa per tuo conto al momento della creazione della funzione, ti consigliamo di includerla come dipendenza esplicita per maggiore chiarezza.

Se la tua funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring di functions-framework nel registro privato. Includi functions-framework con mirroring come dipendenza dalla funzione per evitare di installare il pacchetto dalla rete internet pubblica.

Utilizzo delle librerie client di Google Cloud per Java

Le librerie client di Google Cloud per Java forniscono un accesso idiomatico ai servizi Google Cloud. Per utilizzare una libreria, dichiarala come una dipendenza.

In genere, dichiari le dipendenze solo dalle librerie specifiche necessarie alla funzione. Ad esempio:

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

Tieni presente che questo file build.gradle include un'attività personalizzata per aiutarti a eseguire le funzioni localmente. Per saperne di più sui test locali, consulta La tua prima funzione: 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)
  }
}