Especifica dependencias en Java

Para escribir funciones de Cloud Run en Java, puedes usar cualquier biblioteca compatible con un entorno de ejecución de Java admitido. Puedes usar Maven o Gradle para administrar las dependencias de tus Cloud Run Functions en Java.

Declara y administra dependencias

Puedes declarar y administrar dependencias con Maven o Gradle:

  • Sigue estos pasos para administrar dependencias con Maven:

    • Especifica las dependencias en la sección <dependencies> dentro del archivo pom.xml de tu proyecto.

    • Para administrar la dependencia de tu proyecto en Maven, puedes usar el wrapper de Maven. Si no usas el wrapper de Maven, Cloud Run Functions usa de forma predeterminada una versión reciente de Maven cuando ejecutas gcloud functions deploy.

  • Para administrar dependencias mediante Gradle, debes especificarlas en el archivo build.gradle de tu proyecto.

Functions Framework es una dependencia obligatoria para todas las funciones. Aunque Cloud Run Functions la instala por ti cuando se crea la función, te recomendamos que la incluyas como una dependencia explícita para mayor claridad.

Si tu función depende de dependencias privadas, te recomendamos que dupliques functions-framework en tu registro privado. Incluye el functions-framework replicado como una dependencia en tu función para evitar la instalación del paquete desde el Internet público.

Usa las bibliotecas cliente de Google Cloud para Java

Las bibliotecas cliente de Google Cloud para Java proporcionan acceso idiomático a los Google Cloud servicios. Para usar una biblioteca, debes declararla como dependencia.

Por lo general, solo declaras dependencias en las bibliotecas específicas que necesita tu función. Por ejemplo:

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

Ten en cuenta que el archivo build.gradle incluye una tarea personalizada para ayudarte a ejecutar funciones de forma local.

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)
  }
}