Zarządzanie zależnościami i wtyczkami
Zarządzaj zewnętrznymi bibliotekami, deklaruj zależności i korzystaj z wtyczek SBT, aby rozszerzać funkcjonalność kompilacji.
Zarządzanie zależnościami i wtyczkami to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 3 lekcji w sumie.
Dlaczego warto używać zewnętrznych bibliotek?
Podczas tworzenia projektów Scala często potrzebujesz funkcji, których nie ma w rdzeniu języka. Typowymi przykładami są rejestrowanie zdarzeń, dostęp do baz danych czy frameworki webowe.
Zamiast pisać cały ten kod samodzielnie, możesz użyć zewnętrznych bibliotek (nazywanych również zależnościami). Są to gotowe pakiety kodu utworzone i udostępnione przez innych programistów.
Dodawanie bibliotek do build.sbt
SBT ułatwia dodawanie zewnętrznych bibliotek. Deklaruje się je w pliku build.sbt za pomocą ustawienia libraryDependencies.
Podstawowa składnia wygląda następująco:
"org.group": identyfikator organizacji lub grupy.% "artifact": identyfikator artefaktu (nazwa biblioteki). W przypadku bibliotek Scala użyj%%, aby automatycznie dopasować wersję Scali.% "version": konkretna wersja biblioteki, której chcesz użyć.
Przykład:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"Zakresy zależności: Compile i Test
Biblioteki mogą być potrzebne tylko w określonych częściach projektu. SBT używa do zarządzania nimi zakresów.
compile(domyślny): potrzebny do kompilowania i uruchamiania głównego kodu.test: potrzebny tylko do kompilowania i uruchamiania kodu testów (np. frameworka testowego takiego jak ScalaTest).runtime: nie jest potrzebny podczas kompilacji, ale jest wymagany podczas uruchamiania aplikacji.
Zakres określa się w następujący sposób:
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.16" % "test"Automatyczne pobieranie zależności
Wyobraź sobie, że używana przez Ciebie biblioteka, na przykład framework webowy, również korzysta z innych bibliotek. Nazywamy je zależnościami przechodnimi.
SBT automatycznie pobiera wszystkie te pośrednie zależności. Po dodaniu biblioteki SBT wyszukuje jej własne zależności i również je pobiera, zapewniając projektowi wszystko, czego potrzebuje.
Dzięki temu nie musisz ręcznie śledzić dziesiątek bibliotek!
Rejestrowanie zdarzeń za pomocą SLF4J
Użyjmy popularnej biblioteki do rejestrowania zdarzeń, SLF4J (Simple Logging Facade for Java), wraz z jej prostą implementacją. Najpierw dodaj ją do pliku build.sbt:
libraryDependencies += "org.slf4j" % "slf4j-simple" % "1.7.32"Teraz uruchom poniższy kod Scala, aby zobaczyć ją w działaniu. Zwróć uwagę na import org.slf4j.LoggerFactory, który pochodzi z nowej zależności.
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.")
}
}Rozszerzanie SBT za pomocą wtyczek
Poza zarządzaniem bibliotekami SBT można również rozszerzać za pomocą wtyczek. Wtyczki to specjalne pliki JAR, które dodają do SBT nowe polecenia lub ustawienia.
Istnieją na przykład wtyczki do pakowania aplikacji, wdrażania ich na serwerach, a nawet integracji z określonymi narzędziami, takimi jak formatery kodu.
Pomagają automatyzować typowe zadania i usprawniają przepływ pracy podczas tworzenia oprogramowania.
Deklarowanie wtyczek w plugins.sbt
W przeciwieństwie do zwykłych zależności, które umieszcza się w pliku build.sbt, wtyczki SBT deklaruje się w specjalnym pliku: project/plugins.sbt. Plik ten znajduje się w katalogu project w katalogu głównym projektu SBT.
Składnia jest podobna do składni zależności, ale używa się addSbtPlugin:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")Informuje to SBT, aby pobrało i włączyło określoną wtyczkę dla projektu.
Tworzenie fat JAR za pomocą sbt-assembly
Jedną z popularnych wtyczek jest sbt-assembly. Tworzy ona pojedynczy, wykonywalny „fat JAR” zawierający kod aplikacji i wszystkie jej zależności.
Najpierw dodaj wtyczkę do pliku project/plugins.sbt:
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "2.1.1")Po jej dodaniu możesz uruchomić w terminalu polecenie sbt assembly, aby utworzyć plik JAR. Poniższy kod Scala to kod, który spakowałoby sbt-assembly.
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.")
}
}Zarządzanie wersjami i resolvery
W miarę rozrastania się projektu zarządzanie wieloma zależnościami może być trudne. Oto kilka wskazówek:
- Spójne wersje: używaj tej samej wersji biblioteki we wszystkich modułach, aby uniknąć konfliktów.
- Repozytoria: SBT pobiera biblioteki z repozytoriów, takich jak Maven Central. Jeśli biblioteki nie ma w domyślnych repozytoriach, możesz dodać własne.
Domyślnie SBT korzysta ze standardowych publicznych repozytoriów. W przypadku prywatnych bibliotek należy określić własne repozytorium w pliku build.sbt.
Ułóż kroki we właściwej kolejności
Chcesz dodać do swojego projektu Scala nową zewnętrzną bibliotekę i jej używać. Ułóż poniższe kroki we właściwej kolejności.
Podsumowanie lekcji
Świetnie! Nauczyłeś się, jak zarządzać zewnętrznym kodem w projektach Scala.
- Zależności (biblioteki) dodaje się do pliku
build.sbtza pomocąlibraryDependencies. - SBT obsługuje zależności tranzytywne i umożliwia korzystanie z różnych zakresów, takich jak
compileitest. - Wtyczki rozszerzają funkcjonalność SBT i deklaruje się je w pliku
project/plugins.sbtza pomocąaddSbtPlugin.
Biegłość w zarządzaniu zależnościami i wtyczkami ma kluczowe znaczenie dla wydajnego tworzenia złożonych i niezawodnych aplikacji Scala!
Często zadawane pytania
Czy lekcja „Zarządzanie zależnościami i wtyczkami” jest bezpłatna?
Tak — pełny tekst „Zarządzanie zależnościami i wtyczkami” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 3 lekcji w sumie.
Co nauczysz się w „Zarządzanie zależnościami i wtyczkami”?
Zarządzaj zewnętrznymi bibliotekami, deklaruj zależności i korzystaj z wtyczek SBT, aby rozszerzać funkcjonalność kompilacji. Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?
Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.
Ile czasu zajmuje lekcja „Zarządzanie zależnościami i wtyczkami”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?
Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Konfiguracja i podstawy projektów SBT
- Zarządzanie zależnościami i wtyczkami
- Kompilacje wieloprojektowe i wdrażanie