Especifica dependencias en Java

Para escribir funciones de Cloud Run basadas en Java junto con el entorno de ejecución de Java compatible, puedes usar cualquier biblioteca compatible con este lenguaje de programación. Puedes usar Maven o Gradle para administrar las dependencias de las funciones de Cloud Run en Java.

Declara y administra dependencias

Puedes declarar y administrar dependencias mediante Maven o Gradle:

  • Sigue estos pasos para administrar dependencias mediante 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 Maven Wrapper, las funciones de Cloud Run 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 las funciones de Cloud Run las instala en tu nombre cuando se crea la función, te recomendamos que la incluyas como una dependencia explícita para brindar mayor claridad.

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

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