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 tuo progetto.

    • Per gestire la dipendenza del progetto da Maven, puoi utilizzare il wrapper Maven. Se non utilizzi il wrapper Maven, Cloud Functions utilizza per impostazione predefinita una versione recente di Maven quando esegui 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. Sebbene Cloud Functions la installi per tuo conto al momento della creazione della funzione, ti consigliamo di includerla come dipendenza esplicita per chiarezza.

Se la funzione si basa su dipendenze private, ti consigliamo di eseguire il mirroring di functions-framework nel registro privato. Includi l'oggetto 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 dipendenza.

In genere dichiari solo le dipendenze nelle 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 ulteriori discussioni sui test locali, vedi 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)
  }
}