Todos los productos
Search
Centro de documentos

Function Compute:Compilar y desplegar un paquete de código

Última actualización: Sep 06, 2026

Para desplegar una función de Java en Function Compute, empaquete su código y sus dependencias en un archivo ZIP o JAR. Después, cargue el paquete mediante la consola de Function Compute o Serverless Devs.

Este tema aborda dos rutas de despliegue:

Bibliotecas de dependencias

Function Compute proporciona dos bibliotecas de Java:

Biblioteca

ID del artefacto

Versión

Descripción

com.aliyun:fc-java-core

fc-java-core

1.4.1

Define la interfaz del handler y el objeto de contexto.

com.aliyun:fc-java-events

fc-java-event

1.2.0

Proporciona tipos de eventos para orígenes de eventos comunes.

Obtenga ambas bibliotecas del repositorio central de Maven y agréguelas a su archivo pom.xml:

<!-- fc-java-core: required -->
<dependency>
    <groupId>com.aliyun.fc.runtime</groupId>
    <artifactId>fc-java-core</artifactId>
    <version>1.4.1</version>
</dependency>

<!-- fc-java-events: optional, add if your function handles events from Alibaba Cloud services -->
<dependency>
    <groupId>com.aliyun.fc.runtime</groupId>
    <artifactId>fc-java-event</artifactId>
    <version>1.2.0</version>
</dependency>
Si el paquete de dependencias es demasiado grande, empaquételas en una capa para mantener pequeño el paquete de código. Para obtener más información, consulte Create a custom layer .

Desplegar con Maven

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Pasos

  1. Cree un proyecto de Java. Coloque su handler en src/main/java/example/App.java:

    package example;
    
    import com.aliyun.fc.runtime.Context;
    import com.aliyun.fc.runtime.StreamRequestHandler;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    public class App implements StreamRequestHandler {
    
        @Override
        public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
            outputStream.write(new String("hello world").getBytes());
        }
    }

    Para consultar más ejemplos de handlers, vea Handlers y Context.

  2. En el archivo pom.xml, agregue el plugin maven-shade-plugin a la sección <build>. Este plugin agrupa las dependencias en un solo archivo JAR adecuado para el despliegue.

    También puede usar Apache Maven Assembly en lugar de Apache Maven Shade .
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <filters>
                                <filter>
                                    <artifact>*:*</artifact>
                                    <excludes>
                                        <exclude>META-INF/*.SF</exclude>
                                        <exclude>META-INF/*.DSA</exclude>
                                        <exclude>META-INF/*.RSA</exclude>
                                    </excludes>
                                </filter>
                            </filters>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <details> <summary>Ejemplo completo de pom.xml</summary>

    <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/maven-v4_0_0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>example</groupId>
      <artifactId>HelloFCJava</artifactId>
      <packaging>jar</packaging>
      <version>1.0-SNAPSHOT</version>
      <name>HelloFCJava</name>
    
      <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <dependency>
          <groupId>com.aliyun.fc.runtime</groupId>
          <artifactId>fc-java-core</artifactId>
          <version>1.4.1</version>
        </dependency>
      </dependencies>
    
      <build>
        <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-shade-plugin</artifactId>
              <version>3.2.1</version>
              <executions>
                <execution>
                  <phase>package</phase>
                  <goals>
                    <goal>shade</goal>
                  </goals>
                  <configuration>
                    <filters>
                      <filter>
                        <artifact>*:*</artifact>
                        <excludes>
                          <exclude>META-INF/*.SF</exclude>
                          <exclude>META-INF/*.DSA</exclude>
                          <exclude>META-INF/*.RSA</exclude>
                        </excludes>
                      </filter>
                    </filters>
                  </configuration>
                </execution>
              </executions>
            </plugin>
        </plugins>
      </build>
    
      <properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.test.skip>true</maven.test.skip>
      </properties>
    </project>

    </details>

  3. Desde el directorio raíz del proyecto, ejecute el siguiente comando:

    Importante

    En macOS y Linux, asegúrese de que el archivo de código tenga permisos de lectura y ejecución antes de comprimirlo.

    mvn clean package

    Una compilación exitosa termina con el siguiente resultado:

    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  11.681 s
    [INFO] Finished at: 2020-03-26T15:55:05+08:00
    [INFO] ------------------------------------------------------------------------

    El archivo JAR generado toma su nombre de los campos artifactId y version del archivo pom.xml. En el ejemplo anterior, el archivo es target/HelloFCJava-1.0-SNAPSHOT.jar. Si la compilación falla, revise el mensaje de error y corrija el código antes de volver a intentarlo.

  4. Inicie sesión en la consola de Function Compute y cargue el archivo JAR.

    image

  5. En la página Function Details, vaya a la pestaña Configuration y compruebe el valor de Handler. El handler debe seguir el formato [Package name].[Class name]::[Method name]. En el ejemplo anterior, el handler es example.App::handleRequest. Si es necesario, haga clic en Modify dentro de la sección Basic Configurations para actualizarlo.

    image

  6. En la pestaña Code, haga clic en Test Function para comprobar el despliegue.

    image

Desplegar con Serverless Devs

Serverless Devs gestiona la compilación y el despliegue con un solo comando. El comando s deploy ejecuta mvn package automáticamente antes de cargar el código.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Pasos

  1. Inicialice un proyecto:

    s init

    Cuando el sistema lo solicite, seleccione Alibaba Cloud como proveedor y elija una plantilla de Java, un entorno de ejecución, una región y un nombre de función.

  2. Acceda al directorio del proyecto:

    cd start-fc-event-java8

    La estructura del proyecto es la siguiente:

    start-fc-event-java8
    ├── src
    │   └── main
    │       └── java
    │           └── example
    │               └── App.java
    ├── pom.xml
    ├── readme
    └── s.yaml
  3. Despliegue el proyecto:

    s deploy

    Serverless Devs ejecuta primero mvn package (mediante el hook pre-deploy) y luego carga y despliega el archivo JAR. Un despliegue exitoso finaliza con un resultado similar al siguiente:

    [2022-04-07 12:00:09] [INFO] [S-CORE] - Start the pre-action
    [2022-04-07 12:00:09] [INFO] [S-CORE] - Action: mvn package
    [INFO] Scanning for projects...
    [INFO] ------------------------< example:HelloFCJava >-------------------------
    [INFO] Building HelloFCJava 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    ......
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  3.617 s
    [INFO] Finished at: 2022-04-07T20:00:14+08:00
    [INFO] ------------------------------------------------------------------------
    [2022-04-07 12:00:14] [INFO] [S-CORE] - End the pre-action
    
     Checking Service, Function (0.64s)
     Creating Service, Function (0.71s)
    
    Tips for next step
    ======================
    * Display information of the deployed resource: s info
    * Display metrics: s metrics
    * Display logs: s logs
    * Invoke remote function: s invoke
    * Remove Service: s remove service
    * Remove Function: s remove function
    * Remove Trigger: s remove trigger
    * Remove CustomDomain: s remove domain
    
    helloworld:
      region:   cn-hangzhou
      service:
        name: hello-world-service
      function:
        name:       start-fc-event-java8
        runtime:    java8
        handler:    example.App::handleRequest
        memorySize: 128
        timeout:    60
  4. Invoque la función para comprobar que se ejecuta correctamente:

    s invoke

    Resultado esperado:

    ========= FC invoke Logs begin =========
    FC Initialize Start RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    FC Initialize End RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    FC Invoke Start RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    FC Invoke End RequestId: b246c3bf-06bc-49e5-92b8-xxxxxxxx
    
    Duration: 7.27 ms, Billed Duration: 8 ms, Memory Size: 128 MB, Max Memory Used: 65.75 MB
    ========= FC invoke Logs end =========
    
    FC Invoke Result:
    hello world

Siguientes pasos