Tous les produits
Search
Centre de documentation

Function Compute:Compiler et déployer un package de code

Dernière mise à jour :Aug 12, 2026

Pour déployer une fonction Java sur Function Compute, regroupez votre code et ses dépendances dans un fichier ZIP ou JAR, puis importez ce package via la console Function Compute ou Serverless Devs.

Cette rubrique présente deux méthodes de déploiement :

Bibliothèques de dépendances

Function Compute fournit deux bibliothèques Java :

Bibliothèque Artifact ID Version Description
com.aliyun:fc-java-core fc-java-core 1.4.1 Définit l'interface du handler et l'objet context
com.aliyun:fc-java-events fc-java-event 1.2.0 Fournit les types d'événements pour les sources courantes

Récupérez ces deux bibliothèques depuis le référentiel central Maven, puis ajoutez-les à votre fichier 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 votre package de dépendances est trop volumineux, intégrez-les dans une couche afin de réduire la taille du package de code. Pour plus d'informations, consultez Créer une couche personnalisée .

Déployer avec Maven

Prérequis

Avant de commencer, assurez-vous que les éléments suivants sont installés :

Étapes

  1. Créez un projet Java. Placez votre handler dans 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());
        }
    }

    Pour consulter d'autres exemples de handlers, reportez-vous aux rubriques Handlers et Context.

  2. Dans le fichier pom.xml, ajoutez le plugin maven-shade-plugin à la section <build>. Ce plugin regroupe vos dépendances dans un fichier JAR unique prêt pour le déploiement.

    Vous pouvez également utiliser Apache Maven Assembly à la place d' 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>Exemple complet 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. Depuis le répertoire racine du projet, exécutez la commande suivante :

    Important

    Sur macOS et Linux, vérifiez que le fichier de code dispose bien des droits de lecture et d'exécution avant de le compresser.

    mvn clean package

    Une compilation réussie se termine par :

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

    Le fichier JAR généré porte le nom défini par les champs artifactId et version du fichier pom.xml. Dans l'exemple ci-dessus, il s'agit de target/HelloFCJava-1.0-SNAPSHOT.jar. En cas d'échec de la compilation, analysez le message d'erreur, corrigez votre code, puis relancez la commande.

  4. Connectez-vous à la console Function Compute et importez le fichier JAR.

    image

  5. Sur la page Function Details, accédez à l'onglet Configurations et vérifiez la valeur du champ Handler. Le handler doit respecter le format [Nom du package].[Nom de la classe]::[Nom de la méthode]. Pour l'exemple précédent, le handler est example.App::handleRequest. Cliquez sur Modify pour le modifier si nécessaire.

    image

  6. Dans l'onglet Code, cliquez sur Test Function pour valider le déploiement.

    image

Déployer avec Serverless Devs

Serverless Devs gère la compilation et le déploiement via une commande unique : s deploy lance automatiquement mvn package avant d'importer votre code.

Prérequis

Avant de commencer, assurez-vous que les éléments suivants sont installés et configurés :

Étapes

  1. Initialisez un projet :

    s init

    Lorsque vous y êtes invité, sélectionnez Alibaba Cloud comme fournisseur, puis choisissez un modèle Java, un runtime, une région et un nom de fonction.

  2. Accédez au répertoire du projet :

    cd start-fc-event-java8

    La structure du projet se présente ainsi :

    start-fc-event-java8
    ├── src
    │   └── main
    │       └── java
    │           └── example
    │               └── App.java
    ├── pom.xml
    ├── readme
    └── s.yaml
  3. Déployez le projet :

    s deploy

    Serverless Devs exécute d'abord mvn package (via le hook pre-deploy), puis importe et déploie le fichier JAR. Un déploiement réussi produit une sortie similaire à :

    [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. Appelez la fonction pour vérifier son bon fonctionnement :

    s invoke

    Sortie attendue :

    ========= 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

Étapes suivantes