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 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 con 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 lo instala por ti cuando se crea la función, te recomendamos que lo incluyas como una dependencia explícita para brindar mayor claridad.

Si tu función se basa en dependencias privadas, te recomendamos que replicar 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 servicios de Google Cloud. 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. Para obtener más información sobre las pruebas locales, consulta Tu primera función: 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)
  }
}