Automatizált Build és Függőségkezelés
54 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

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?

A Maven ID komponensei a groupId, artifactId, version, packaging és classifier.

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?

<p>A mavenCentral() és google() segédmetódusokat használhatjuk.</p> Signup and view all the answers

Milyen hatással van a csomagok cache-elése a Gradle futtatására?

<p>A csomagok cache-elése miatt az első használat lassú lehet.</p> Signup and view all the answers

Mik a függőség hatókörök szerepe a projektéletciklusban?

<p>A függőség hatókörök meghatározzák, hogy a projekt mely fázisaiban van szükség a függőségekre.</p> Signup and view all the answers

Hogyan adhatunk meg más tárolókat Gradle-ben?

<p>Más tárolókat URL alapján adhatunk meg a 'repositories' blokkban.</p> Signup and view all the answers

Mi a Gradle java plugin szerepe a függőségekhez?

<p>A Gradle java plugin aktiválása szükséges a függőségek használatához.</p> Signup and view all the answers

Miért nem elegendő a System.out.println a Java naplózásához?

<p>Mert nem teszi lehetővé az üzenetek szűrését, formázását és több kimenetre való küldését.</p> 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?

<p>Az SLF4J lehetővé teszi különböző naplózási keretrendszerek integrálását és a kívánt naplózási rendszer kiválasztását.</p> Signup and view all the answers

Mi az SLF4J hibaüzenetek jelentése, ha hiányzik a megfelelő implementáció?

<p>A hibaüzenet arra figyelmeztet, hogy nem sikerült betölteni a 'StaticLoggerBinder' osztályt, és alapértelmezett NOP naplózó implementációt használ.</p> Signup and view all the answers

Milyen függőségeket kell telepíteni az SLF4J használatához?

<p>Az SLF4J-hoz az slf4j-api és egy konkrét naplózási keretrendszerhez tartozó csomag szükséges.</p> Signup and view all the answers

Miért fontos az üzenetek formázása a naplózás során?

<p>Az üzenetek formázása lehetővé teszi, hogy fontos információk, mint például a timestamp és a forrásosztály, automatikusan hozzáadásra kerüljenek.</p> Signup and view all the answers

Milyen példa kód mutatja be az SLF4J használatát?

<p>A példa a 'HelloWorld' osztályban szerepel, ahol a LOG.info() metódust használják a naplózásra.</p> Signup and view all the answers

Milyen üzeneteket lehetőség van naplózni a fejlesztési folyamat során?

<p>A fejlesztési folyamat során lehetőség van fontos üzenetek, hibák, figyelmeztetések és debug információk naplózására.</p> Signup and view all the answers

Mik az általános előnyök a dedikált naplózási keretrendszerek használatában?

<p>A dedikált keretrendszerek használata lehetővé teszi a rugalmasabb és testreszabottabb naplózást, valamint a naplózási szintek kezelését.</p> Signup and view all the answers

Mik az előnyei a multimodul projekteknek a Gradle használatával?

<p>Segít a modularizálásban és a függőségek szétválasztásában.</p> Signup and view all the answers

Hogyan lehet almodulokat definiálni a settings.gradle fájlban?

<p>Az almodulokat az <code>include</code> kulcsszóval definiáljuk, például: <code>include 'module1', 'module2'</code>.</p> Signup and view all the answers

Milyen beállításokat végezhetünk globálisan a Gradle projektekben?

<p>Globálisan beállíthatjuk a projektcsoportot és verziót az <code>allprojects</code> closure-ben.</p> Signup and view all the answers

Miként lehet másik modulra hivatkozni a Gradle-ben?

<p>A <code>dependencies</code> zónában a <code>implementation project(':other_project_name')</code> szintaxist használjuk.</p> Signup and view all the answers

Miért fontos a tiszta kódolás a multimodul projektekben?

<p>A tiszta kódolás segít elkerülni a körkörös függőségeket és fenntartani a projekt karbantartását.</p> Signup and view all the answers

Milyen kulcsszóval lehet a Gradle-ben csak az alprojektekre vonatkozó beállításokat végezni?

<p>A <code>subprojects</code> closure-t használjuk az alprojektek beállításainak megadásához.</p> Signup and view all the answers

Milyen plugin-t kell alkalmazni a Java projekteknél a Gradle-ben?

<p>A <code>java</code> plugint kell alkalmazni a <code>subprojects</code> closure-ben.</p> Signup and view all the answers

Mit határoz meg a application blokk a Gradle build.gradle fájlban?

<p>A <code>mainClass</code>-t határozza meg, amely a futtatható Java alkalmazás belépési pontját jelöli.</p> Signup and view all the answers

Miért használnak globális beállításokat a Gradle projektekben?

<p>Globális beállítások használatával egységesíthetjük a projekt verzióját és csoportját.</p> Signup and view all the answers

Mik a funkciói a repositories blokkban?

<p>A <code>repositories</code> blokkban definiáljuk, honnan tölthetjük le a függőségeket, például a <code>mavenCentral()</code>-t.</p> Signup and view all the answers

Mik a Gradle által generált Maven-kompatibilis csomagok előnyei?

<p>A Gradle által generált Maven-kompatibilis csomagok lehetővé teszik, hogy más Maven-alapú projektek hivatkozhassanak rájuk.</p> Signup and view all the answers

Mi a szerepe a LoggerFactory.getLogger() metódusnak az HelloWorld osztályban?

<p>A <code>LoggerFactory.getLogger()</code> metódus a naplózó objektumot hozza létre, amely lehetővé teszi a log üzenetek írását.</p> Signup and view all the answers

Mire szolgál a publishToMavenLocal feladat Gradle-ben?

<p>A <code>publishToMavenLocal</code> feladat feltölti a lokális Maven cache-be az eredményezett erőforrást.</p> Signup and view all the answers

Mit tesz a maven-publish plugin a Gradle projektben?

<p>A <code>maven-publish</code> plugin lehetővé teszi a Maven stílusú függőségek kezelését és a publikálási feladatok megadását.</p> Signup and view all the answers

Milyen fájl jön létre a Gradle projekt publikálása során?

<p>A Gradle projekt publikálása során egy <code>pom.xml</code> fájl jön létre.</p> Signup and view all the answers

Milyen könyvtárban tárolódik alapértelmezetten a lokális Maven cache?

<p>A lokális Maven cache alapértelmezetten a <code>~/.m2/repository</code> könyvtárban tárolódik.</p> Signup and view all the answers

Mi történik az HelloWorld.logHello() metódus meghívásakor?

<p>A <code>logHello()</code> metódus beolvassa a <code>hello.properties</code> fájlt és kiírja a 'Hello' üzenetet a naplóba a megfelelő névvel.</p> Signup and view all the answers

Milyen célt szolgál a @RunWith(JUnit4.class) annotáció a tesztosztályban?

<p>@RunWith(JUnit4.class) annotáció az osztály JUnit 4 tesztkeretrendszerrel való futtatására szolgál.</p> Signup and view all the answers

Milyen típusú hibaüzeneteket kezel az INFO szintű logger a HelloWorld osztályban?

<p>Az <code>INFO</code> szintű logger a normál működésről és információkról nyújt visszajelzést, például sikeres eseményekről.</p> Signup and view all the answers

Mi a funkciója a assert metódusnak a HelloWorldTest osztályban?

<p>Az <code>assert</code> metódus a tesztelt kód eredményének ellenőrzésére szolgál, hogy megbizonyosodjunk a helyes működésről.</p> Signup and view all the answers

Mi a feladata a compileJava tasknak a Gradle rendszerben?

<p>A <code>compileJava</code> task a forráskódok kompilálásáért felelős.</p> 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?

<p>A kompilálandó forráskódokból származó osztályok kerülnek bele.</p> Signup and view all the answers

Milyen formátumban található a Gradle projekt telepítésdeszkriptor fájlja?

<p>A Gradle projekt telepítésdeszkriptor fájlja <code>build.gradle</code> formátumban található.</p> Signup and view all the answers

Melyik task felelős a projekt futtatásáért, ha van egy main metódust tartalmazó osztály?

<p>A <code>run</code> task felelős a projekt futtatásáért.</p> Signup and view all the answers

Mivel foglalkozik a processResources task a Gradle rendszerben?

<p>A <code>processResources</code> task az erőforrások másolásáért felelős.</p> Signup and view all the answers

Mit jelent a konvencionális csomagstruktúra Java forráskód mappák esetében?

<p>A konvencionális csomagstruktúra előírja a fájlok szervezését és helyét.</p> 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?

<p>A <code>src/main/java</code> osztályok nem látják a <code>src/test/java</code> osztályokat.</p> Signup and view all the answers

Milyen típusú fájlok találhatóak a src/test/resources mappában?

<p>A <code>src/test/resources</code> mappában unit tesztekhez használt erőforrások találhatóak.</p> Signup and view all the answers

Mi az installDist és distZip taskok célja a Gradle rendszerben?

<p>Ezek a taskok a projekt és az összes függőség egy kiadható distributable-be való összecsomagolását szolgálják.</p> 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?

<p>Mert ezek a fájlok csak tesztelési célokra szolgálnak és nem részei a végterméknek.</p> Signup and view all the answers

Mik a csomagok hierarchikus felépítésének fő elemei a Java projektekben?

<p>A csomagok felépítése a projekt típusa, a tulajdonos intézmény neve, a projekt neve és a további részletek, mint például az osztályok célja.</p> Signup and view all the answers

Miért használják a fordított sorrendet a hálózati domainnevek hierarchiájában?

<p>A fordított sorrend biztosítja, hogy a csomagok unikalitása és azonosíthatósága megmaradjon a névsorban.</p> Signup and view all the answers

Mik a leggyakoribb projekt típusok, amelyek a csomagok elnevezésében szerepelnek?

<p>A leggyakoribb projekt típusok a kereskedelmi (commercial - com), tanítási jellegű (educational - edu) és non-profit (organizational - org).</p> Signup and view all the answers

Mire szolgál a getResourceAsStream() metódus a Java-ban?

<p>A <code>getResourceAsStream()</code> metódus lehetővé teszi, hogy betöltsünk egy erőforrást (pl. fájlt) a classpath-ból.</p> Signup and view all the answers

Milyen szerepet játszik a Properties osztály a Java programokban?

<p>A <code>Properties</code> osztály kulcs-érték párok formájában tárolja a konfigurációs beállításokat, amelyeket betölthetünk és olvashatunk.</p> 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?

<p>A Maven XML alapú konfigurációt használ, míg a Gradle deklaratív és imperatív stílusban is támogatható, Groovy vagy Kotlin alapú szkriptekkel.</p> Signup and view all the answers

Mi a feladata a main metódusnak a Java alkalmazásban?

<p>A <code>main</code> metódus az alkalmazás belépési pontja, itt kezdődik a program végrehajtása.</p> Signup and view all the answers

Milyen típusú modulokra hivatkozunk függőségként a Gradle használatakor?

<p>A Gradle függőségek olyan modulokra vonatkoznak, amelyek definíciói függetlenek a jelenlegi modultól, de szükségesek annak működéséhez.</p> Signup and view all the answers

Flashcards

Csomaghierarchia

A csomaghierarchia garantálja, hogy a függőségek osztálynevei ne ütközzenek.

Domainnevek hierarchiája

A domainnevek fordított sorrendben követik a csomagok logikáját.

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

A csomagban található név az intézmény (cégek, egyetemek) neve, amely a projektet birtokolja.

Signup and view all the flashcards

Projekt neve

A csomag struktúrában található név, ami az adott projektet azonosítja.

Signup and view all the flashcards

Osztály célja

A projekten belüli további finomzott kategória, amely az osztályok funkcióját határozza meg.

Signup and view all the flashcards

Maven

Automatizált build és függőségkezelő eszköz Java projektekhez.

Signup and view all the flashcards

Gradle

Függőségkezelő eszköz, amely segít a modulok közötti kapcsolat kialakításában.

Signup and view all the flashcards

SLF4J

A Simple Logging Facade for Java, abstracts logging frameworks.

Signup and view all the flashcards

Logback

A logging framework that implements SLF4J, highly configurable.

Signup and view all the flashcards

JUnit

A testing framework for Java applications, used for unit testing.

Signup and view all the flashcards

build.gradle

The build configuration file for Gradle projects.

Signup and view all the flashcards

hello.properties

A properties file for configuration data, like name in the example.

Signup and view all the flashcards

publishToMavenLocal

Gradle task to upload artifacts to local Maven cache.

Signup and view all the flashcards

maven-publish plugin

A Gradle plugin to publish artifacts to Maven repositories.

Signup and view all the flashcards

LoggerFactory

A factory class in SLF4J for creating Logger instances.

Signup and view all the flashcards

@Test annotation

Marks a method as a test method in JUnit.

Signup and view all the flashcards

Csomagoló feladat (Jar)

A Gradle task, amely a Java forráskód kompilálásáért felelős.

Signup and view all the flashcards

Gradle plugin - application

Egy Gradle plugin, amely tesz feladatokat a Java alkalmazás futtatására és csomagolására.

Signup and view all the flashcards

src/main/java

A hely, ahol a kompilálandó forráskód található.

Signup and view all the flashcards

src/test/java

A hely, ahol az egység tesztek forráskódjai találhatók.

Signup and view all the flashcards

src/main/resources

A konfigurációs fájlok és egyéb erőforrások helye.

Signup and view all the flashcards

Függőségkezelés

A projektben használt könyvtárak és csomagok kezelése.

Signup and view all the flashcards

Gradle feladatok listázása

Parancs a Gradle feladatok listázására részletes módban.

Signup and view all the flashcards

Csomagstruktúra

Java forráskódmappák struktúrájára vonatkozó konvenciók.

Signup and view all the flashcards

Projektstruktúra

A projekt különböző komponenseinek elhelyezése és szerkezete.

Signup and view all the flashcards

Függőségek

Csomagok, amelyekre szükség van a projekt működéséhez.

Signup and view all the flashcards

Maven ID

A csomag egyedi azonosítója, amely három fő részből áll.

Signup and view all the flashcards

groupId

A csomag alap csoportnevének azonosítója.

Signup and view all the flashcards

artifactId

A projekt vagy almodul nevének azonosítója.

Signup and view all the flashcards

version

A modul verziószáma, amely nyomon követi a változásokat.

Signup and view all the flashcards

repositories szekció

Ahol a tárolók deklarálásra kerülnek a Gradle fájlban.

Signup and view all the flashcards

configuration

A Gradle által definiált rész, amely megadja, mikor szükséges a függőség.

Signup and view all the flashcards

Naplózás

Az üzenetek rendszeres gyűjtése és elemzése a szoftver működése során.

Signup and view all the flashcards

System.out.println

Egyszerű üzenetkiíró a Java nyelvben, de korlátozott lehetőségekkel.

Signup and view all the flashcards

Üzenetek szűrése

A naplózott üzenetek leválogatása, hogy csak a fontosak jelenjenek meg.

Signup and view all the flashcards

Üzenetek kimenete

Naplózott üzenetek irányítása különböző helyekre, mint fájlok vagy konzol.

Signup and view all the flashcards

Üzenetek formázása

A naplózott üzenetek automatikus kiegészítése időbélyeggel és egyéb információkkal.

Signup and view all the flashcards

sfl4j-api

A SLF4J használatához szükséges függőség, amely lehetővé teszi a naplózást.

Signup and view all the flashcards

StaticLoggerBinder hibaüzenet

A SLF4J hibaüzenete, ha nem található a megfelelő naplózási implementáció.

Signup and view all the flashcards

Modularizálás

A kód különálló részekre való bontása, hogy könnyebben kezelhető legyen.

Signup and view all the flashcards

Függőségek szétválasztása

Modulok közötti kapcsolatok rendezése, hogy csak a szükségesek legyenek használva.

Signup and view all the flashcards

Körkörös függőségek elkerülése

Modulok nem hivatkozhatnak egymásra ciklikusan, így tiszta kódot garantálva.

Signup and view all the flashcards

Karbantartási parancsok

Parancsok, amelyek egyszerre több alprojekteket érintenek a Gradle-ben.

Signup and view all the flashcards

Gyökérmodul

A projekt fő modulja, amely almodulokat importál a settings.gradle fájlon keresztül.

Signup and view all the flashcards

allprojects closure

Globális beállítások elvégzésére szolgál minden projekten a Gradle-ben.

Signup and view all the flashcards

subprojects closure

Csak alprojektek beállításaira vonatkozóan szolgál a Gradle rendszerében.

Signup and view all the flashcards

dependencies blokk

Olyan rész a Gradle fájlban, ahol a modulok közötti függőségeket definiáljuk.

Signup and view all the flashcards

include parancs

Almodulok definícióját végzi el a settings.gradle fájlban.

Signup and view all the flashcards

implementation kulcsszó

A projekten belüli más modulra való hivatkozás a függőségek definiálásakor.

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.

Quiz Team

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!

More Like This

Use Quizgecko on...
Browser
Browser