全部产品
Search
文档中心

Function Compute:Kompilasi dan Penyebaran Paket Kode

更新时间:Jul 06, 2025

Anda dapat mengkompilasi program dalam lingkungan Java lokal menggunakan Maven atau Serverless Devs, memaketkan program ke dalam file ZIP atau JAR, lalu mengunggah paket kode di konsol Function Compute atau menggunakan Serverless Devs. Setelah itu, Anda dapat menguji fungsi untuk memastikan bahwa kode berjalan sesuai harapan.

Pustaka dependensi untuk runtime Java

Untuk membuat dan menyebarkan paket kode, Anda harus mengompilasi dan memaketkan kode fungsi serta pustaka dependensi bersama-sama sebagai file ZIP atau JAR.

Function Compute menyediakan pustaka dependensi berikut untuk runtime Java:

Anda dapat menggunakan repositori pusat Maven untuk mendapatkan dependensi di atas. Setelah mendapatkan pustaka dependensi tersebut, tambahkan mereka ke file pom.xml. Contoh kode berikut memberikan ilustrasi:

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

<!-- https://mvnrepository.com/artifact/com.aliyun.fc.runtime/fc-java-event -->
<dependency>
    <groupId>com.aliyun.fc.runtime</groupId>
    <artifactId>fc-java-event</artifactId>
    <version>1.2.0</version>
</dependency>
Catatan

Jika paket dependensi terlalu besar, Anda dapat memaketkan dependensi ke dalam layer untuk mengurangi ukuran paket kode. Untuk informasi lebih lanjut, lihat Buat Layer Kustom.

Kompilasi dan Penyebaran Paket Kode Menggunakan Maven

Prerequisites

Java dan Maven telah diinstal. Untuk informasi lebih lanjut tentang Java, kunjungi situs resmi Java. Untuk informasi lebih lanjut tentang Maven, lihat Menginstal Apache Maven.

Procedure

  1. Buat proyek Java. Contoh kode berikut menunjukkan jalur file App.java:

    src/main/java/example/App.java  

    Tambahkan contoh kode berikut ke file App.java. Untuk kode contoh lengkap, lihat Handlers atau Context.

    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());
        }
    }
  2. Di file pom.xml, konfigurasikan build. Contoh kode:

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

    Anda dapat menggunakan Apache Maven Shade atau Apache Maven Assembly. Contoh di atas menggunakan Apache Maven Shade sebagai contoh.

    Perluas untuk melihat file pom.xml lengkapnya

    <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>
  3. Buka CLI, beralih ke direktori root proyek, lalu jalankan perintah mvn clean package untuk melakukan pemaketan.

    Contoh kode:

    [INFO] Scanning for projects...
     ...  ....   ....
    [INFO] --------------------------< example:example >---------------------------
    [INFO] Building java-example 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
     ...  ....   ....
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  11.681 s
    [INFO] Finished at: 2020-03-26T15:55:05+08:00
    [INFO] ------------------------------------------------------------------------
    • Jika kompilasi gagal, modifikasi kode berdasarkan pesan kesalahan.

    • Jika kompilasi berhasil, file JAR yang dikompilasi akan berada di direktori target di folder proyek dan diberi nama HelloFCJava-1.0-SNAPSHOT.jar sesuai dengan bidang artifactId dan version di pom.xml.

      Penting

      Untuk sistem operasi macOS dan Linux, pastikan bahwa file kode dapat dibaca dan dieksekusi sebelum kompresi.

  4. Masuk ke konsol Function Compute dan unggah paket kode.

    image

  5. Di tab Configurations pada halaman Function Details, periksa nilai Handler. Handler harus mengikuti format [Nama Paket].[Nama Kelas]::[Nama Metode]. Sebagai contoh, jika nama paket adalah example, nama kelas adalah App, dan nama metode adalah handleRequest, handler permintaan dapat dikonfigurasi sebagai example.App::handleRequest. Anda dapat mengklik Modify untuk memodifikasi handler jika tidak valid.

    image

  6. Di tab Code, klik Test Function untuk menguji fungsi.

    image

Kompilasi dan Penyebaran Paket Kode Menggunakan Serverless Devs

Prerequisites

  • Serverless Devs dan dependensinya telah diinstal. Untuk informasi lebih lanjut, lihat Memulai Cepat.

  • Serverless Devs telah dikonfigurasi. Untuk informasi lebih lanjut, lihat Konfigurasi Serverless Devs.

  • Java Development Kit (JDK) telah diinstal. Anda dapat mengunduh JDK dari Unduhan Java.

  • Maven telah diinstal. Anda dapat mengunduh Maven dari Unduh.

Procedure

  1. Jalankan perintah berikut untuk menginisialisasi proyek Anda:

    s init 

    Konfigurasikan Alibaba Cloud sebagai penyedia cloud, template, runtime, dan wilayah tempat aplikasi diterapkan, serta nama fungsi.

  2. Jalankan perintah berikut untuk masuk ke direktori proyek:

    cd start-fc-event-java8

    Berikut ini adalah struktur direktori:

    start-fc-event-java8
    ├── src
    │   └── main
    │       └── java
    │ └── example
    │ └── App.java
    ├── pom.xml
    ├── readme
    └── s.yaml
  3. Jalankan perintah berikut untuk menyebarkan proyek:

    s deploy

    Saat menjalankan perintah ini, perintah pre-deploy dijalankan terlebih dahulu. Saat perintah pre-deploy dijalankan, perintah mvn package digunakan untuk melakukan kompilasi dan pemaketan. Paket kode diunggah dan disebarkan setelah itu. Contoh keluaran perintah:

    [2022-04-07 12:00:09] [INFO] [S-CORE] - Mulai pre-action
    [2022-04-07 12:00:09] [INFO] [S-CORE] - Action: mvn package
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------------< example:HelloFCJava >-------------------------
    [INFO] Building HelloFCJava 1.0-SNAPSHOT
    [INFO] --------------------------------[ jar ]---------------------------------
    ......
    [INFO] ------------------------------------------------------------------------
    [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] - Akhir pre-action
    
     Memeriksa Service, Function (0.64s)
     Membuat Service, Function (0.71s)
    
    Tips untuk langkah selanjutnya
    ======================
    * Tampilkan informasi sumber daya yang disebarkan: s info
    * Tampilkan metrik: s metrics
    * Tampilkan log: s logs
    * Panggil fungsi jarak jauh: s invoke
    * Hapus Service: s remove service
    * Hapus Function: s remove function
    * Hapus Trigger: s remove trigger
    * Hapus 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. Jalankan perintah s invoke untuk melakukan pengujian.

    Contoh keluaran perintah:

    ➜ start-fc-event-java8 s invoke
    ========= 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
    
    
    
    Akhir metode: invoke