자바의 종속 항목 지정

지원되는 Java 런타임으로 모든 Java 호환 라이브러리를 사용하여 Java에서 Cloud Run Functions를 작성할 수 있습니다. Maven 또는 Gradle을 사용하여 Java Cloud Run Functions에 대해 종속 항목을 관리할 수 있습니다.

종속 항목 선언 및 관리

Maven 또는 Gradle을 사용하여 종속 항목을 선언 및 관리할 수 있습니다.

  • Maven을 사용하여 종속 항목을 관리하려면 다음 안내를 따르세요.

    • 프로젝트의 pom.xml 파일 내에서 <dependencies> 섹션에 종속 항목을 지정합니다.

    • Maven 자체에서 프로젝트 종속 항목을 관리하려면 Maven 래퍼를 사용할 수 있습니다. Maven 래퍼를 사용하지 않는 경우 Cloud Run Functions에는 gcloud functions deploy를 실행할 때 기본적으로 Maven의 최신 버전이 사용됩니다.

  • Gradle을 사용하여 종속 항목을 관리하려면 프로젝트의 build.gradle 파일에 종속 항목을 지정합니다.

함수 프레임워크는 모든 함수에 필요한 종속 항목입니다. Cloud Run Functions는 함수 생성 시 이를 자동으로 설치하지만 명확히 하자면 명시적 종속 항목으로 포함하는 것이 좋습니다.

함수에서 비공개 종속 항목을 사용하는 경우 functions-framework를 비공개 레지스트리에 미러링하는 것이 좋습니다. 공개 인터넷에서 패키지를 설치하지 않으려면 미러링된 functions-framework를 함수에 대한 종속 항목으로 포함합니다.

자바용 Google Cloud 클라이언트 라이브러리 사용

자바용 Google Cloud 클라이언트 라이브러리는 Google Cloud 서비스에 대한 원활한 액세스를 제공합니다. 라이브러리를 사용하려면 종속 항목으로 선언합니다.

일반적으로 함수에 필요한 특정 라이브러리에만 종속 항목을 선언합니다. 예를 들면 다음과 같습니다.

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

build.gradle 파일에는 함수를 로컬로 실행하는 데 도움이 되는 커스텀 작업이 포함되어 있습니다. 로컬 테스트에 대한 자세한 내용은 첫 번째 함수: 자바를 참조하세요.

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