0Pricing
Scala for Backend Engineering & Functional Programming · Leçon

Constructions multi-projets et déploiement

Configurez et gérez des constructions SBT multi-projets pour des applications de grande taille et préparez leur déploiement.

Constructions multi-projets et déploiement est une leçon Scala for Backend Engineering & Functional Programming gratuite sur CoddyKit. Ceci est la leçon 3 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Scala for Backend Engineering & Functional Programming, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Scala for Backend Engineering & Functional Programming comprend 3 leçons au total.

Pourquoi des compilations multi-projets ?

À mesure que les applications Scala grandissent, il peut devenir difficile de gérer tout le code dans un seul projet. Les compilations multi-projets permettent d’organiser votre base de code.

Elles vous permettent de :

  • séparer différents modules (par exemple, la logique principale, l’API et les utilitaires) ;
  • gérer clairement les dépendances entre ces modules ;
  • appliquer des paramètres spécifiques à chaque partie de votre application.

Cette approche améliore la modularité et la maintenabilité.

Définir plusieurs projets

Dans SBT, vous définissez plusieurs projets dans votre fichier principal build.sbt. Chaque projet est généralement un lazy val.

Le projet racine agrège généralement ces sous-projets ou en dépend.

Voici une configuration de base pour un projet racine et deux sous-projets :

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

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

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

Structure des répertoires des sous-projets

Dans une compilation multi-projets, chaque sous-projet se trouve généralement dans son propre répertoire, au niveau racine de votre projet.

La structure standard se présente ainsi :

  • my-app/ (répertoire du projet racine)
    • build.sbt (fichier principal de compilation)
    • project/ (fichiers de définition de compilation SBT)
    • core/ (répertoire du sous-projet « core »)
      • src/ (code source de « core »)
    • api/ (répertoire du sous-projet « api »)
      • src/ (code source de « api »)

Exemple de code d’un sous-projet

Chaque sous-projet peut contenir ses propres fichiers source Scala. Par exemple, notre projet core pourrait contenir un utilitaire simple.

Essayez d’exécuter cet exemple depuis le projet 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"))
  }
}

Dépendances entre projets

Souvent, un sous-projet doit utiliser le code d’un autre. Par exemple, votre projet api pourrait avoir besoin de Greeter, qui se trouve dans le projet core.

Vous déclarez ces dépendances à l’aide de .dependsOn() dans votre fichier 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)

Partager des paramètres communs

De nombreux paramètres (comme la version de Scala ou les dépendances communes) peuvent être identiques dans tous vos sous-projets.

Pour éviter les répétitions, vous pouvez définir un bloc commonSettings et l’appliquer à chaque projet.

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)

Agréger des tâches

Lorsqu’un projet racine agrège des sous-projets, l’exécution d’une tâche comme compile sur le projet racine l’exécute automatiquement sur tous les sous-projets agrégés.

Par exemple, saisir sbt compile dans votre répertoire racine compilera à la fois core et api.

La méthode .aggregate() est essentielle à ce comportement.

Empaqueter pour le déploiement

Une fois votre application compilée, vous devez l’empaqueter pour le déploiement. Cela signifie généralement créer un fichier JAR (archive Java) exécutable.

Pour les compilations multi-projets, vous souhaiterez souvent obtenir un seul JAR contenant tout le code de votre projet ainsi que ses dépendances. On l’appelle un « fat JAR » ou un « uber JAR ».

SBT ne crée pas de fat JAR par défaut, mais des extensions peuvent vous aider.

Extension SBT Assembly pour les fat JAR

L’extension sbt-assembly est largement utilisée pour créer des fat JAR. Elle regroupe toutes les classes compilées et les dépendances dans un seul JAR exécutable.

Commencez par ajouter l’extension à project/plugins.sbt :

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

Empaquetage multi-projets

Laquelle des affirmations suivantes concernant l’empaquetage d’une application Scala multi-projets pour le déploiement est TRUE ?

Récapitulatif et prochaines étapes

Vous avez appris à structurer et à gérer des compilations multi-projets avec SBT !

  • Nous avons vu comment définir des sous-projets dans build.sbt.
  • Vous avez découvert comment organiser les répertoires et gérer les dépendances entre projets avec .dependsOn().
  • Nous avons expliqué comment partager des paramètres communs et agréger des tâches.
  • Enfin, nous avons étudié l’empaquetage pour le déploiement, notamment l’utilisation de l’extension sbt-assembly pour créer des fat JAR.

Maîtriser les compilations multi-projets est essentiel pour les applications Scala plus grandes et plus complexes, car cela garantit la modularité et des flux de développement efficaces.

Questions Fréquemment Posées

La leçon « Constructions multi-projets et déploiement » est-elle gratuite ?

Oui — le texte complet de « Constructions multi-projets et déploiement » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Scala for Backend Engineering & Functional Programming, passe à CoddyKit PRO. Le cours Scala for Backend Engineering & Functional Programming comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Constructions multi-projets et déploiement » ?

Configurez et gérez des constructions SBT multi-projets pour des applications de grande taille et préparez leur déploiement. Tu pratiques Scala for Backend Engineering & Functional Programming avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Scala for Backend Engineering & Functional Programming ?

Aucune expérience préalable n'est requise. Scala for Backend Engineering & Functional Programming sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 3.

Combien de temps prend la leçon « Constructions multi-projets et déploiement » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Scala for Backend Engineering & Functional Programming ?

Oui. Chaque leçon Scala for Backend Engineering & Functional Programming inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration et bases des projets SBT
  2. Gestion des dépendances et modules d’extension
  3. Constructions multi-projets et déploiement
← Retour à Scala for Backend Engineering & Functional Programming