0Pricing
Scala for Backend Engineering & Functional Programming · Pelajaran

Pembangunan Multi-Proyek dan Penerapan

Konfigurasikan dan kelola pembangunan SBT multi-proyek untuk aplikasi yang lebih besar, lalu bersiaplah untuk penerapan.

Pembangunan Multi-Proyek dan Penerapan adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 3 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 3 pelajaran total.

Mengapa Build Multi-Proyek?

Seiring berkembangnya aplikasi Scala, mengelola semua kode dalam satu proyek dapat menjadi sulit. Build multi-proyek membantu mengatur basis kode Anda.

Pendekatan ini memungkinkan Anda untuk:

  • Memisahkan berbagai modul (misalnya logika inti, API, dan utilitas).
  • Mengelola dependensi antar-modul dengan jelas.
  • Menerapkan pengaturan khusus pada bagian tertentu dari aplikasi Anda.

Pendekatan ini meningkatkan modularitas dan kemudahan pemeliharaan.

Mendefinisikan Beberapa Proyek

Di SBT, Anda mendefinisikan beberapa proyek di dalam file utama build.sbt. Setiap proyek biasanya berupa lazy val.

Proyek root biasanya mengagregasikan atau bergantung pada subproyek-subproyek tersebut.

Berikut adalah pengaturan dasar untuk satu proyek root dan dua subproyek:

lazy val root = project
  .in(file("."))
  .aggregate(core, api)

lazy val core = project
  .in(file("core"))

lazy val api = project
  .in(file("api"))

Struktur Direktori Subproyek

Dalam build multi-proyek, setiap subproyek biasanya berada di direktorinya sendiri pada tingkat root proyek Anda.

Struktur standarnya terlihat seperti berikut:

  • my-app/ (direktori proyek root)
    • build.sbt (file build utama)
    • project/ (file definisi build SBT)
    • core/ (direktori subproyek 'core')
      • src/ (kode sumber untuk 'core')
    • api/ (direktori subproyek 'api')
      • src/ (kode sumber untuk 'api')

Contoh Kode Subproyek

Setiap subproyek dapat berisi file sumber Scala-nya sendiri. Sebagai contoh, proyek core kita mungkin memiliki utilitas sederhana.

Cobalah menjalankan contoh ini dari dalam proyek core:

package com.coddykit.core

object Greeter {
  def greet(name: String): String = s"Hello, $name!"
}

object CoreApp {
  def main(args: Array[String]): Unit = {
    println(Greeter.greet("CoddyKit"))
  }
}

Dependensi Antarproyek

Sering kali, satu subproyek perlu menggunakan kode dari subproyek lain. Misalnya, proyek api Anda mungkin memerlukan Greeter dari proyek core.

Anda mendeklarasikan dependensi ini menggunakan .dependsOn() di build.sbt.

lazy val root = project
  .in(file("."))
  .aggregate(core, api)

lazy val core = project
  .in(file("core"))

lazy val api = project
  .in(file("api"))
  .dependsOn(core)

Berbagi Pengaturan Umum

Banyak pengaturan (seperti versi Scala atau dependensi umum) mungkin sama di semua subproyek Anda.

Untuk menghindari pengulangan, Anda dapat mendefinisikan blok commonSettings dan menerapkannya ke setiap proyek.

lazy val commonSettings = Seq(
  scalaVersion := "2.13.8",
  organization := "com.coddykit"
)

lazy val root = project
  .in(file("."))
  .aggregate(core, api)
  .settings(commonSettings)

lazy val core = project
  .in(file("core"))
  .settings(commonSettings)

lazy val api = project
  .in(file("api"))
  .dependsOn(core)
  .settings(commonSettings)

Mengagregasikan Tugas

Jika Anda memiliki proyek root yang mengagregasikan subproyek, menjalankan tugas seperti compile pada root akan otomatis menjalankannya pada semua subproyek yang diagregasikan.

Misalnya, mengetikkan sbt compile di direktori root akan mengompilasi core dan api.

Metode .aggregate() adalah kunci untuk perilaku ini.

Membuat Paket untuk Deployment

Setelah aplikasi Anda selesai dibangun, Anda perlu membuat paket untuk deployment. Biasanya, ini berarti membuat file JAR yang dapat dieksekusi (Java Archive).

Untuk build multi-proyek, Anda biasanya menginginkan satu JAR yang mencakup semua kode proyek dan dependensinya. Ini disebut 'fat JAR' atau 'uber JAR'.

SBT tidak membuat fat JAR secara default, tetapi plugin dapat membantu.

Plugin Assembly SBT untuk Fat JAR

Plugin sbt-assembly banyak digunakan untuk membuat fat JAR. Plugin ini menggabungkan semua class dan dependensi yang telah dikompilasi ke dalam satu JAR yang dapat dieksekusi.

Pertama, tambahkan plugin tersebut ke project/plugins.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.0.0")

Pengemasan Multi-Proyek

Pernyataan manakah berikut ini yang BENAR tentang pengemasan aplikasi Scala multi-proyek untuk deployment?

Rekap dan Langkah Berikutnya

Anda telah mempelajari cara menyusun dan mengelola build multi-proyek di SBT!

  • Kita membahas cara mendefinisikan subproyek di build.sbt.
  • Anda melihat cara mengatur direktori dan mengelola dependensi antarproyek dengan .dependsOn().
  • Kita membahas cara berbagi pengaturan umum dan mengagregasikan tugas.
  • Terakhir, kita mempelajari pengemasan untuk deployment, khususnya menggunakan plugin sbt-assembly untuk membuat fat JAR.

Menguasai build multi-proyek sangat penting untuk aplikasi Scala yang lebih besar dan kompleks, karena memastikan modularitas serta alur kerja pengembangan yang efisien.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pembangunan Multi-Proyek dan Penerapan” gratis?

Ya — teks lengkap “Pembangunan Multi-Proyek dan Penerapan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Pembangunan Multi-Proyek dan Penerapan”?

Konfigurasikan dan kelola pembangunan SBT multi-proyek untuk aplikasi yang lebih besar, lalu bersiaplah untuk penerapan. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?

Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 3.

Berapa lama pelajaran “Pembangunan Multi-Proyek dan Penerapan” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?

Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Penyiapan dan Dasar-Dasar Proyek SBT
  2. Pengelolaan Dependensi dan Plugin
  3. Pembangunan Multi-Proyek dan Penerapan
← Kembali ke Scala for Backend Engineering & Functional Programming