Spécifier les dépendances en Java

Vous pouvez utiliser n'importe quelle bibliothèque Java compatible avec un environnement d'exécution Java compatible pour écrire des fonctions Cloud Run en Java. Vous pouvez utiliser Maven ou Gradle pour gérer les dépendances de vos fonctions Cloud Functions pour Java.

Déclarer et gérer les dépendances

Vous pouvez déclarer et gérer les dépendances à l'aide de Maven ou de Gradle :

  • Pour gérer les dépendances à l'aide de Maven, procédez comme suit :

    • Spécifiez les dépendances dans la section <dependencies> du fichier pom.xml de votre projet.

    • Pour gérer la dépendance de votre projet sur Maven, vous pouvez utiliser le wrapper Maven. Si vous n'utilisez pas le wrapper Maven, les fonctions Cloud Run utilisent par défaut une version récente de Maven lors de l'exécution de gcloud functions deploy.

  • Pour gérer les dépendances à l'aide de Gradle, vous devez les spécifier dans le fichier build.gradle de votre projet.

Le Functions Framework est une dépendance requise pour toutes les fonctions. Bien que les fonctions Cloud Run l'installent en votre nom lors de la création de la fonction, nous vous recommandons de l'inclure en tant que dépendance explicite pour plus de clarté.

Si votre fonction repose sur des dépendances privées, nous vous recommandons de mettre en miroir functions-framework dans votre registre privé. Incluez la valeur functions-framework mise en miroir en tant que dépendance à votre fonction pour éviter d'installer le package depuis l'Internet public.

Utiliser les bibliothèques clientes Google Cloud pour Java

Les bibliothèques clientes Google Cloud pour Java fournissent un accès idiomatique aux services Google Cloud. Pour utiliser une bibliothèque, déclarez-la en tant que dépendance.

En règle générale, vous ne déclarez des dépendances que pour les bibliothèques spécifiques dont votre fonction a besoin. Exemple :

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

Notez que ce fichier build.gradle inclut une tâche personnalisée pour vous aider à exécuter des fonctions localement. Pour en savoir plus sur les tests en local, consultez la page Votre première fonction : 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)
  }
}