Podcast
Questions and Answers
Milyen függőségrendszereket támogat a Gradle?
Milyen függőségrendszereket támogat a Gradle?
A Gradle a Maven és Ivy stílusú tárolókból való behúzást támogatja.
Melyek a Maven ID komponensei?
Melyek a Maven ID komponensei?
A Maven ID komponensei a groupId, artifactId, version, packaging és classifier.
Hol keresi először a Gradle a függőségeket?
Hol keresi először a Gradle a függőségeket?
A Gradle először a lokális tárolóban keresi a függőségeket.
Milyen segédmetódusokat használhatunk Maven stílusú tárolók deklarálására Gradle-ben?
Milyen segédmetódusokat használhatunk Maven stílusú tárolók deklarálására Gradle-ben?
Signup and view all the answers
Milyen hatással van a csomagok cache-elése a Gradle futtatására?
Milyen hatással van a csomagok cache-elése a Gradle futtatására?
Signup and view all the answers
Mik a függőség hatókörök szerepe a projektéletciklusban?
Mik a függőség hatókörök szerepe a projektéletciklusban?
Signup and view all the answers
Hogyan adhatunk meg más tárolókat Gradle-ben?
Hogyan adhatunk meg más tárolókat Gradle-ben?
Signup and view all the answers
Mi a Gradle java plugin szerepe a függőségekhez?
Mi a Gradle java plugin szerepe a függőségekhez?
Signup and view all the answers
Miért nem elegendő a System.out.println a Java naplózásához?
Miért nem elegendő a System.out.println a Java naplózásához?
Signup and view all the answers
Milyen lehetőségeket kínál az SLF4J a fejlesztők számára a naplózás során?
Milyen lehetőségeket kínál az SLF4J a fejlesztők számára a naplózás során?
Signup and view all the answers
Mi az SLF4J hibaüzenetek jelentése, ha hiányzik a megfelelő implementáció?
Mi az SLF4J hibaüzenetek jelentése, ha hiányzik a megfelelő implementáció?
Signup and view all the answers
Milyen függőségeket kell telepíteni az SLF4J használatához?
Milyen függőségeket kell telepíteni az SLF4J használatához?
Signup and view all the answers
Miért fontos az üzenetek formázása a naplózás során?
Miért fontos az üzenetek formázása a naplózás során?
Signup and view all the answers
Milyen példa kód mutatja be az SLF4J használatát?
Milyen példa kód mutatja be az SLF4J használatát?
Signup and view all the answers
Milyen üzeneteket lehetőség van naplózni a fejlesztési folyamat során?
Milyen üzeneteket lehetőség van naplózni a fejlesztési folyamat során?
Signup and view all the answers
Mik az általános előnyök a dedikált naplózási keretrendszerek használatában?
Mik az általános előnyök a dedikált naplózási keretrendszerek használatában?
Signup and view all the answers
Mik az előnyei a multimodul projekteknek a Gradle használatával?
Mik az előnyei a multimodul projekteknek a Gradle használatával?
Signup and view all the answers
Hogyan lehet almodulokat definiálni a settings.gradle fájlban?
Hogyan lehet almodulokat definiálni a settings.gradle fájlban?
Signup and view all the answers
Milyen beállításokat végezhetünk globálisan a Gradle projektekben?
Milyen beállításokat végezhetünk globálisan a Gradle projektekben?
Signup and view all the answers
Miként lehet másik modulra hivatkozni a Gradle-ben?
Miként lehet másik modulra hivatkozni a Gradle-ben?
Signup and view all the answers
Miért fontos a tiszta kódolás a multimodul projektekben?
Miért fontos a tiszta kódolás a multimodul projektekben?
Signup and view all the answers
Milyen kulcsszóval lehet a Gradle-ben csak az alprojektekre vonatkozó beállításokat végezni?
Milyen kulcsszóval lehet a Gradle-ben csak az alprojektekre vonatkozó beállításokat végezni?
Signup and view all the answers
Milyen plugin-t kell alkalmazni a Java projekteknél a Gradle-ben?
Milyen plugin-t kell alkalmazni a Java projekteknél a Gradle-ben?
Signup and view all the answers
Mit határoz meg a application
blokk a Gradle build.gradle fájlban?
Mit határoz meg a application
blokk a Gradle build.gradle fájlban?
Signup and view all the answers
Miért használnak globális beállításokat a Gradle projektekben?
Miért használnak globális beállításokat a Gradle projektekben?
Signup and view all the answers
Mik a funkciói a repositories
blokkban?
Mik a funkciói a repositories
blokkban?
Signup and view all the answers
Mik a Gradle által generált Maven-kompatibilis csomagok előnyei?
Mik a Gradle által generált Maven-kompatibilis csomagok előnyei?
Signup and view all the answers
Mi a szerepe a LoggerFactory.getLogger()
metódusnak az HelloWorld
osztályban?
Mi a szerepe a LoggerFactory.getLogger()
metódusnak az HelloWorld
osztályban?
Signup and view all the answers
Mire szolgál a publishToMavenLocal
feladat Gradle-ben?
Mire szolgál a publishToMavenLocal
feladat Gradle-ben?
Signup and view all the answers
Mit tesz a maven-publish
plugin a Gradle projektben?
Mit tesz a maven-publish
plugin a Gradle projektben?
Signup and view all the answers
Milyen fájl jön létre a Gradle projekt publikálása során?
Milyen fájl jön létre a Gradle projekt publikálása során?
Signup and view all the answers
Milyen könyvtárban tárolódik alapértelmezetten a lokális Maven cache?
Milyen könyvtárban tárolódik alapértelmezetten a lokális Maven cache?
Signup and view all the answers
Mi történik az HelloWorld.logHello()
metódus meghívásakor?
Mi történik az HelloWorld.logHello()
metódus meghívásakor?
Signup and view all the answers
Milyen célt szolgál a @RunWith(JUnit4.class)
annotáció a tesztosztályban?
Milyen célt szolgál a @RunWith(JUnit4.class)
annotáció a tesztosztályban?
Signup and view all the answers
Milyen típusú hibaüzeneteket kezel az INFO
szintű logger a HelloWorld
osztályban?
Milyen típusú hibaüzeneteket kezel az INFO
szintű logger a HelloWorld
osztályban?
Signup and view all the answers
Mi a funkciója a assert
metódusnak a HelloWorldTest
osztályban?
Mi a funkciója a assert
metódusnak a HelloWorldTest
osztályban?
Signup and view all the answers
Mi a feladata a compileJava
tasknak a Gradle rendszerben?
Mi a feladata a compileJava
tasknak a Gradle rendszerben?
Signup and view all the answers
Mely fájlok kerülnek bele a végső termékbe a src/main/java
könyvtárból?
Mely fájlok kerülnek bele a végső termékbe a src/main/java
könyvtárból?
Signup and view all the answers
Milyen formátumban található a Gradle projekt telepítésdeszkriptor fájlja?
Milyen formátumban található a Gradle projekt telepítésdeszkriptor fájlja?
Signup and view all the answers
Melyik task felelős a projekt futtatásáért, ha van egy main metódust tartalmazó osztály?
Melyik task felelős a projekt futtatásáért, ha van egy main metódust tartalmazó osztály?
Signup and view all the answers
Mivel foglalkozik a processResources
task a Gradle rendszerben?
Mivel foglalkozik a processResources
task a Gradle rendszerben?
Signup and view all the answers
Mit jelent a konvencionális csomagstruktúra Java forráskód mappák esetében?
Mit jelent a konvencionális csomagstruktúra Java forráskód mappák esetében?
Signup and view all the answers
Mit nem láthatnak egymásból a src/main/java
és a src/test/java
könyvtárban lévő osztályok?
Mit nem láthatnak egymásból a src/main/java
és a src/test/java
könyvtárban lévő osztályok?
Signup and view all the answers
Milyen típusú fájlok találhatóak a src/test/resources
mappában?
Milyen típusú fájlok találhatóak a src/test/resources
mappában?
Signup and view all the answers
Mi az installDist
és distZip
taskok célja a Gradle rendszerben?
Mi az installDist
és distZip
taskok célja a Gradle rendszerben?
Signup and view all the answers
Miért nem kerülnek a src/test/java
és src/test/resources
könyvtárban lévő fájlok a végső termékbe?
Miért nem kerülnek a src/test/java
és src/test/resources
könyvtárban lévő fájlok a végső termékbe?
Signup and view all the answers
Mik a csomagok hierarchikus felépítésének fő elemei a Java projektekben?
Mik a csomagok hierarchikus felépítésének fő elemei a Java projektekben?
Signup and view all the answers
Miért használják a fordított sorrendet a hálózati domainnevek hierarchiájában?
Miért használják a fordított sorrendet a hálózati domainnevek hierarchiájában?
Signup and view all the answers
Mik a leggyakoribb projekt típusok, amelyek a csomagok elnevezésében szerepelnek?
Mik a leggyakoribb projekt típusok, amelyek a csomagok elnevezésében szerepelnek?
Signup and view all the answers
Mire szolgál a getResourceAsStream()
metódus a Java-ban?
Mire szolgál a getResourceAsStream()
metódus a Java-ban?
Signup and view all the answers
Milyen szerepet játszik a Properties
osztály a Java programokban?
Milyen szerepet játszik a Properties
osztály a Java programokban?
Signup and view all the answers
Mi a különbség a Maven és Gradle között a függőségkezelés terén?
Mi a különbség a Maven és Gradle között a függőségkezelés terén?
Signup and view all the answers
Mi a feladata a main
metódusnak a Java alkalmazásban?
Mi a feladata a main
metódusnak a Java alkalmazásban?
Signup and view all the answers
Milyen típusú modulokra hivatkozunk függőségként a Gradle használatakor?
Milyen típusú modulokra hivatkozunk függőségként a Gradle használatakor?
Signup and view all the answers
Flashcards
Csomaghierarchia
Csomaghierarchia
A csomaghierarchia garantálja, hogy a függőségek osztálynevei ne ütközzenek.
Domainnevek hierarchiája
Domainnevek hierarchiája
A domainnevek fordított sorrendben követik a csomagok logikáját.
Projekt típusok
Projekt típusok
A projekt típus a csomagoló névnél három kategóriát jelöl: kereskedelmi, tanítási, non-profit.
Tulajdonos intézmény
Tulajdonos intézmény
Signup and view all the flashcards
Projekt neve
Projekt neve
Signup and view all the flashcards
Osztály célja
Osztály célja
Signup and view all the flashcards
Maven
Maven
Signup and view all the flashcards
Gradle
Gradle
Signup and view all the flashcards
SLF4J
SLF4J
Signup and view all the flashcards
Logback
Logback
Signup and view all the flashcards
JUnit
JUnit
Signup and view all the flashcards
build.gradle
build.gradle
Signup and view all the flashcards
hello.properties
hello.properties
Signup and view all the flashcards
publishToMavenLocal
publishToMavenLocal
Signup and view all the flashcards
maven-publish plugin
maven-publish plugin
Signup and view all the flashcards
LoggerFactory
LoggerFactory
Signup and view all the flashcards
@Test annotation
@Test annotation
Signup and view all the flashcards
Csomagoló feladat (Jar)
Csomagoló feladat (Jar)
Signup and view all the flashcards
Gradle plugin - application
Gradle plugin - application
Signup and view all the flashcards
src/main/java
src/main/java
Signup and view all the flashcards
src/test/java
src/test/java
Signup and view all the flashcards
src/main/resources
src/main/resources
Signup and view all the flashcards
Függőségkezelés
Függőségkezelés
Signup and view all the flashcards
Gradle feladatok listázása
Gradle feladatok listázása
Signup and view all the flashcards
Csomagstruktúra
Csomagstruktúra
Signup and view all the flashcards
Projektstruktúra
Projektstruktúra
Signup and view all the flashcards
Függőségek
Függőségek
Signup and view all the flashcards
Maven ID
Maven ID
Signup and view all the flashcards
groupId
groupId
Signup and view all the flashcards
artifactId
artifactId
Signup and view all the flashcards
version
version
Signup and view all the flashcards
repositories szekció
repositories szekció
Signup and view all the flashcards
configuration
configuration
Signup and view all the flashcards
Naplózás
Naplózás
Signup and view all the flashcards
System.out.println
System.out.println
Signup and view all the flashcards
Üzenetek szűrése
Üzenetek szűrése
Signup and view all the flashcards
Üzenetek kimenete
Üzenetek kimenete
Signup and view all the flashcards
Üzenetek formázása
Üzenetek formázása
Signup and view all the flashcards
sfl4j-api
sfl4j-api
Signup and view all the flashcards
StaticLoggerBinder hibaüzenet
StaticLoggerBinder hibaüzenet
Signup and view all the flashcards
Modularizálás
Modularizálás
Signup and view all the flashcards
Függőségek szétválasztása
Függőségek szétválasztása
Signup and view all the flashcards
Körkörös függőségek elkerülése
Körkörös függőségek elkerülése
Signup and view all the flashcards
Karbantartási parancsok
Karbantartási parancsok
Signup and view all the flashcards
Gyökérmodul
Gyökérmodul
Signup and view all the flashcards
allprojects closure
allprojects closure
Signup and view all the flashcards
subprojects closure
subprojects closure
Signup and view all the flashcards
dependencies blokk
dependencies blokk
Signup and view all the flashcards
include parancs
include parancs
Signup and view all the flashcards
implementation kulcsszó
implementation kulcsszó
Signup and view all the flashcards
Study Notes
Tartalom
- A bemutatott anyag szoftvermérnöki tananyag, amely az automatizált build és függőségkezelés témáját járja körül.
- A bemutatott eszközök a Maven és a Gradle.
- A bemutatott nyelv a Groovy.
Automatizált Build és Függőségkezelés
- A build rendszerek a programozási nyelvek nagy részénél ismétlődő, hibaszennyezett feladatok automatizálására szolgálnak.
- Létrehozzák a futtatható JAR fájlokat, és kezelik a függőségeket.
- A Make eszköz már korábban biztosította ezt a funkciót, a parancs valamilyen leírófájlban van.
- A Makefile egy leírófájl, amely megadja a végrehajtandó parancsokat.
- A build rendszerek segítenek a fejlesztőknek a repetitív feladatok elvégzésében.
- A build rendszerekben lévő parancsok eléréséhez állományokat használnak, pl Makefile, amelyekben a build parancsok megtalálhatók.
- A build rendszerek feladatai közé tartozik a futtatás, tesztek futtatása, és a külső szerverekre történő kitelepítés.
Függőségkezelés
- Vállalati szintű rendszerek esetén a nyelvbe beépített függvények nem elegendőek.
- Külső könyvtárak és keretrendszerek beépítése szükséges.
- A kompilálás és más aktivitások (linkelés, csomagolás, tesztelés, konzolról történő futtatás) automatizálása fontos.
- A függőségeket egy deszkriptorban rögzítjük, amelyet a verziókövetés alá helyezünk.
- Minden nagyobb programozási nyelv rendelkezik legalább egy függőségkezelő eszközzel.
Build és függőségkezelési eszközök
- A legtöbb programozási nyelv nyújt egy build eszközöt (pl. Java: Maven, Gradle; node.js: npm, yarn; Python: pip; .NET/C#: NuGet).
- Egyes eszközök csak build automatizálást végeznek, de nem kezelik a függőségeket.
- Kompilált nyelvek esetén a modern eszközök mindkét feltételnek megfelelnek.
Groovy, a Gradle szkriptek nyelve
- Groovy egy Java alapú interpretált szkriptnyelv, amely egyszerűen tanulható, és inspirációt kapott más nyelvekből (pl. Python).
- Groovy-ban a Java kód közvetlenül is használható.
- Az implementálás egyszerűsítése érdekében nem kell main függvény, elhagyhatjuk a pontosvesszőket és a zárójeleket.
- A System.out stream metódusait prefix nélkül hívhatjuk.
- A return utasítást egyszerűsíthetők.
- A Groovy nem erősen típusos, a változók megadásához a „def” kulcsszó használható.
- List és Map példányok inline zárójelekkel adhatóak meg.
Gradle és Maven
- Mindkettő automatikát biztosítanak a buildhez, a függőségekhez és a projektmenedzsmenthez.
- Mindkettő nyílt forráskódú.
- Több projektet is menedzselhetünk (multimodul) egyszerre.
- Konvenciót szabnak a mappák és állományok nevére és elhelyezkedésére, valamint a struktúrára.
- Mindkettő rendelkezik sok külső kiegészítővel.
- Maven: deszkriptor: pom.xml (XML-formátumú)
- Gradle: deszkriptor: build.gradle (Groovy vagy Kotlin), build.gradle.kts
- Különböző célpontmappák léteznek (pl. Gradleben build; Mavenben target).
- Különböző verziókezelő eszközöket támogatnak.
Gradle taskok
- A Gradle egy parancssori eszköz, amely lehetővé teszi a taskok futtatását.
- Egy taskot a task kulcsszóval adunk hozzá, és a benne lévő doLast kulcsszó írja le a végrehajtandó feladatot.
- Taskok között függőségek létezhetnek.
Gradle pluginok
- Új taskokat hoznak létre, vagy elvégzik a forráskódszettek és konfigurációk kezelését.
- A pluginok között vannak pl. a Java, C++, Javascript, Npm,...
Gradle függőségek
- A függőségek deklarációját a dependencies szekcióban végezzük.
- Két szintaxis van: a ":" karakter elválasztással vagy kulcs-érték párok használata.
Maven projekt példa
- A példa Java kódot mutat be.
Gradle függőségek példa
- Több példa kódot mutat be a függőségek használatára és definiálására.
Naplózás
- A rendszeres, a naplózási rendszer fontos és hasznos üzeneteket ad ki.
- Fontos a kimenet szűrése.
- Több kimenet kezelését támogatja (pl. konzol és fájl).
- Fontos a napló formátumának személyre szabása (pl. időbélyeg, osztálynév).
logback
- Jól ismert logolási keretrendszer, amely spirituális örökös a log4j-nek.
- XML vagy Groovy szintaxisú a YAML vagy JSON.
- Támogatja a hot reload-ot.
- Szükséges függőségek léteznek.
Multimodul projektek
- Nagy projektek alprokjektekre bontása.
- Függőségek szétválasztása.
- Modulok egymásra épülése.
Minőségbiztosítás Gradle-lel
test
task: lefuttatja az összes JUnit tesztet.check
task: lefuttatja összes minőségügyi taskot.- Statisztikus kódelemző eszközökről említés történik.
Statikus kódelemzés Gradle-lel
- Statikus kódelemző eszközök beépítése a projektbe pluginok segítségével.
- Ismertebb Java eszközök: checkstyle, pmd, spotbugs.
Konvencionális projektstruktúra
- Projekt struktúrára vonatkozó konvenciók.
src/main/java
,src/main/resources
,src/test/java
,src/test/resources
mappákról említés történik.- Csomag struktúrában érvényes.
Konvencionális csomag struktúra
- Java forráskód mappák struktúrája.
- Csomagstruktúráról van szó.
Gradle Maven-Publish Plugin
- Gradle Maven plugin a Maven stílusú függőségekhez
- Pom.xml generálás.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.
Description
Ez a kviz a szoftvermérnöki tananyagra fókuszál, különös figyelmet fordítva az automatizált build rendszerekre és a függőségkezelésre. A Maven és a Gradle eszközök, valamint a Groovy nyelv alkalmazásait tárgyalja. Ismerd meg, hogy hogyan segítik a build rendszerek a fejlesztőket a feladatok automatizálásában!