Gestione delle dipendenze e plugin
Gestisca librerie esterne, dichiari le dipendenze e utilizzi i plugin SBT per estendere le funzionalità di build.
Gestione delle dipendenze e plugin è una lezione Scala for Backend Engineering & Functional Programming gratuita su CoddyKit. Questa è la lezione 2 di 3. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Scala for Backend Engineering & Functional Programming, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Scala for Backend Engineering & Functional Programming include 3 lezioni in totale.
Perché usare librerie esterne?
Quando si creano progetti Scala, spesso è necessaria una funzionalità che non fa parte del linguaggio di base. La registrazione degli eventi, l'accesso ai database e i framework web sono alcuni esempi comuni.
Invece di scrivere tutto questo codice autonomamente, è possibile usare librerie esterne (chiamate anche dipendenze). Si tratta di pacchetti di codice già scritti, creati e condivisi da altri sviluppatori.
Aggiunta delle librerie a build.sbt
SBT semplifica l'aggiunta di queste librerie esterne. Le si dichiarano nel file build.sbt del progetto usando l'impostazione libraryDependencies.
Ecco la sintassi di base:
"org.group": l'organizzazione o il group ID.% "artifact": l'artifact ID (il nome della libreria). Usi%%per le librerie Scala, così da adattare automaticamente la versione di Scala.% "version": la versione specifica della libreria desiderata.
Esempio:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"Ambiti delle dipendenze: Compile e Test
Alcune librerie possono essere necessarie solo per parti specifiche del progetto. SBT usa gli ambiti per gestire questo aspetto.
compile(predefinito): necessario per compilare ed eseguire il codice principale.test: necessario solo per compilare ed eseguire il codice di test (ad esempio un framework di test come ScalaTest).runtime: non necessario durante la compilazione, ma richiesto quando l'applicazione viene eseguita.
Si specifica l'ambito nel modo seguente:
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.16" % "test"Recupero automatico delle dipendenze
Immagini che una libreria usata, ad esempio un framework web, utilizzi a sua volta altre librerie. Queste vengono chiamate dipendenze transitive.
SBT gestisce automaticamente il recupero di tutte queste dipendenze indirette. Quando si aggiunge una libreria, SBT cerca le relative dipendenze e scarica anche quelle, assicurando che il progetto disponga di tutto ciò che serve.
In questo modo non è necessario tenere traccia manualmente di decine di librerie!
Logging con SLF4J
Usiamo una libreria di logging comune, SLF4J (Simple Logging Facade for Java), insieme alla sua implementazione semplice. Per prima cosa, la aggiunga a build.sbt:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"Ora esegua il codice Scala qui sotto per vederla in azione. Noti come importiamo org.slf4j.LoggerFactory, che proviene dalla nuova dipendenza.
import org.slf4j.LoggerFactory
object Main {
private val logger = LoggerFactory.getLogger(getClass.getName)
def main(args: Array[String]): Unit = {
logger.info("Hello from a logged message!")
println("This is a standard print output.")
}
}Estensione di SBT con i plugin
Oltre a gestire le librerie, è possibile estendere SBT usando i plugin. I plugin sono file JAR speciali che aggiungono nuovi comandi o impostazioni a SBT.
Ad esempio, esistono plugin per creare pacchetti di applicazioni, effettuare il deployment sui server o persino integrare strumenti specifici, come i formatter del codice.
Aiutano ad automatizzare le attività comuni e a rendere più efficiente il flusso di lavoro di sviluppo.
Dichiarazione dei plugin in plugins.sbt
A differenza delle dipendenze normali, che vengono inserite in build.sbt, i plugin SBT vengono dichiarati in un file speciale: project/plugins.sbt. Questo file si trova nella directory project, nella directory principale del progetto SBT.
La sintassi è simile a quella delle dipendenze, ma si usa addSbtPlugin:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")In questo modo si indica a SBT di scaricare e abilitare il plugin specificato per il progetto.
Creazione di un fat JAR con sbt-assembly
Un plugin molto usato è sbt-assembly. Crea un singolo "fat JAR" eseguibile che contiene il codice dell'applicazione e tutte le sue dipendenze.
Per prima cosa, aggiunga il plugin a project/plugins.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")Dopo averlo aggiunto, può eseguire sbt assembly dal terminale per creare il JAR. Il codice Scala qui sotto è quello che sbt-assembly inserirebbe nel pacchetto.
object Main {
def main(args: Array[String]): Unit = {
println("This is a simple application.")
println("sbt-assembly would package this along with its dependencies into a single JAR.")
}
}Gestione delle versioni e resolver
Man mano che il progetto cresce, gestire molte dipendenze può diventare complesso. Ecco alcuni suggerimenti:
- Versioni coerenti: utilizzi la stessa versione di una libreria in tutti i moduli per evitare conflitti.
- Resolver: SBT recupera le librerie dai repository, come Maven Central. È possibile aggiungere resolver personalizzati se una libreria non è disponibile in quelli predefiniti.
Per impostazione predefinita, SBT utilizza repository pubblici standard. Per le librerie private, è necessario specificare un resolver personalizzato in build.sbt.
Ordinare i passaggi
Desidera aggiungere una nuova libreria esterna al progetto Scala e utilizzarla. Disponga i passaggi seguenti nell'ordine corretto.
Riepilogo della lezione
Ottimo lavoro! Ha imparato a gestire codice esterno nei progetti Scala.
- Le dipendenze (librerie) vengono aggiunte a
build.sbtutilizzandolibraryDependencies. - SBT gestisce le dipendenze transitive e supporta diversi ambiti (come
compileetest). - I plugin estendono le funzionalità di SBT e vengono dichiarati in
project/plugins.sbtutilizzandoaddSbtPlugin.
Imparare a gestire dipendenze e plugin è fondamentale per creare in modo efficiente applicazioni Scala complesse e robuste!
Domande Frequenti
La lezione «Gestione delle dipendenze e plugin» è gratuita?
Sì — il testo completo di «Gestione delle dipendenze e plugin» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Scala for Backend Engineering & Functional Programming, passa a CoddyKit PRO. Il corso Scala for Backend Engineering & Functional Programming include 3 lezioni in totale.
Cosa imparerò in «Gestione delle dipendenze e plugin»?
Gestisca librerie esterne, dichiari le dipendenze e utilizzi i plugin SBT per estendere le funzionalità di build. Eserciti Scala for Backend Engineering & Functional Programming con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Scala for Backend Engineering & Functional Programming?
Non è richiesta alcuna esperienza precedente. Scala for Backend Engineering & Functional Programming su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 3.
Quanto tempo richiede la lezione «Gestione delle dipendenze e plugin»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Scala for Backend Engineering & Functional Programming?
Sì. Ogni lezione Scala for Backend Engineering & Functional Programming include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Configurazione e fondamenti dei progetti SBT
- Gestione delle dipendenze e plugin
- Build multi-progetto e deployment