Specificare le dipendenze in Java

Puoi utilizzare qualsiasi libreria compatibile con Java con un runtime Java supportato per scrivere le funzioni di Cloud Run in Java. Puoi utilizzare uno dei seguenti metodi: Maven o Gradle per gestire le dipendenze per le funzioni Java Cloud Run.

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 pom.xml del progetto.

    • Per gestire la dipendenza del progetto da Maven, puoi utilizzare Wrapper Maven. Se non utilizzi Maven Wrapper, Cloud Run utilizza per impostazione predefinita una versione recente di Maven quando esegui gcloud functions deploy.

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

Functions Framework è una dipendenza obbligatoria per tutte le funzioni. Sebbene Cloud Run funzioni lo installi per tuo conto quando viene creata la funzione, ti consigliamo includerla come dipendenza esplicita per maggiore chiarezza.

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

Utilizzo delle librerie client di Google Cloud per Java

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

In genere dichiari le dipendenze solo nelle librerie specifiche che delle funzioni. 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 funzioni localmente. Per ulteriori informazioni sui test locali, consulta Il tuo team 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)
  }
}