全部产品
Search
文档中心

Function Compute:Kompilasi dan penerapan paket kode

更新时间:Dec 18, 2025

Topik ini menjelaskan cara mengompilasi program dalam waktu proses Java menggunakan Maven atau Serverless Devs, serta memaketkan program sebagai file ZIP atau JAR. Setelah kode dikompilasi dan dipaketkan, Anda dapat mengunggah paket kode di Konsol Function Compute atau menggunakan Serverless Devs.

Pustaka dependensi untuk waktu proses Java

Untuk membuat dan menerapkan paket kode, Anda harus mengompilasi dan memaketkan kode fungsi bersama dengan pustaka dependensinya sebagai file ZIP atau JAR.

Function Compute menyediakan pustaka dependensi berikut untuk waktu proses Java:

Anda dapat menggunakan repositori pusat Maven untuk mendapatkan dependensi tersebut. Setelah mendapatkan pustaka dependensi, 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 menjadi layer untuk mengurangi ukuran paket kode. Untuk informasi lebih lanjut, lihat Buat Layer Kustom.

Kompilasi dan penerapan paket kode menggunakan Maven

Before you start

Pastikan 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 Penangan Event, Penangan HTTP, atau Konteks.

    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 referensi.

    Perluas untuk melihat file pom.xml lengkap

    <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 Function Compute console dan unggah paket kode.

    image

  5. Di tab Configurations, periksa nilai dari 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 dapat dikonfigurasikan 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 penerapan paket kode menggunakan Serverless Devs

Before you start

Procedure

  1. Jalankan perintah berikut untuk menginisialisasi proyek:

    s init devsapp/start-fc-event-java8 -d start-fc-event-java8
    • s init devsapp/start-fc-event-java8: Menginisialisasi proyek berdasarkan template penangan event.

    • -d start-fc-event-java8: Menampilkan file proyek ke direktori yang ditentukan.

    Setelah menjalankan perintah, pilih wilayah, nama layanan, dan nama fungsi, serta konfigurasikan kunci sesuai petunjuk.

    Catatan

    Anda juga dapat menjalankan perintah s init untuk memilih template sesuai petunjuk.

  2. Jalankan perintah berikut untuk masuk ke direktori proyek:

    cd start-fc-event-java8
  3. Jalankan perintah berikut untuk menerapkan 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 diterapkan 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 diterapkan: 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