Module 10: Build Tools Flashcards

1
Q

Wat is het concept dependency management?

A

Dependency management gaat over het bijhouden van externe projecten waar je applicatie van afhankelijk is

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Waar staat Ant voor?

A

Another Neat Tool

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

In wat voor een bestand specificeert Ant zijn buildproces?

A

in een XML-bestand genaamd build.xml.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

In welk jaar is Maven ontwikkeld?

A

2004

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Waarom werd Ivy overbodig nadat Maven op de markt kwam?

A

Maven beschikt over een dependency manager

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Voor het bouwen van je applicatie onderscheidt Maven verschillende build lifecycles. Uit welke drie lifecycles bestaat Maven standaard?

A

clean, default en site.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wat doet de maven lifecycle clean?

A

Binnen de clean-lifecycle worden alle door Maven gegenereerde bestanden opgeschoond.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat doet de maven lifecycle default?

A

Met het uitvoeren van de default-lifecycle kun je je applicatie bouwen en deployen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wat doet de maven phase validate?

A

Binnen de validate-fase wordt de POM geverifieerd en gekeken of de benodigde informatie aanwezig is. Daarnaast wordt het project gecheckt op mogelijke compilatiefouten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat doet de maven phase compile?

A

Gedurende de compile-fase wordt de broncode gecompileerd naar Java-bytecode.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wat doet de maven phase test?

A

Tijdens de test-fase worden alle unittests van bijvoorbeeld JUnit gedraaid.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wat doet de maven phase package?

A

In deze fase wordt het pakket gemaakt door Maven. Afhankelijk van de instellingen in je POM kan dit een JAR- of een WAR-bestand opleveren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wat doet de maven phase verify?

A

Binnen de verify-fase roept Maven checks aan voor kwaliteitscriteria. In werkelijkheid is er ook een aparte integration-test-fase, maar door het aanroepen van de verify-fase wordt deze automatisch uitgevoerd.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wat doet de maven phase install?

A

Na het uitvoeren van de install-fase is, als alles goed gegaan is, je pakket in je lokale Maven-repository geïnstalleerd. Hierna is het mogelijk om je artifact te gebruiken in bijvoorbeeld andere modules of projecten.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wat doet de maven phase deploy?

A

Tot slot wordt met de deploy-fase alles naar een externe repository gepubliceerd, zodat ook andere ontwikkelaars gebruik kunnen maken van jouw artifact.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wat doet de maven lifecycle site?

A

De site-lifecycle zorgt ervoor dat documentatie wordt gegenereerd. Deze documentatie kan bestaan uit bijvoorbeeld Javadocs of API documentatie. Daarnaast kan deze lifecycle de documentatie deployen naar een documentatieserver.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Wat is het project object model (Maven)?

A

Ook Maven gebruikt een XML-bestand voor zijn configuratie. Dit noemen we de project object model (POM) en deze wordt gedefinieerd in pom.xml.

De POM is de basis voor Mavens configuratie en bevat alle metadata van het project, naast dependencies, plug-ins en overige informatie om een artifact te bouwen.

18
Q

Wat is de root-tag van een POM?

A

de project-tag

19
Q

Wat is de artifactId-tag?

A

Met de artifactId specificeer je de naam van je pakket

20
Q

Wat is de packaging-tag?

A

Met de packaging-tag geef je aan wat voor pakketje gebouwd moet worden. De meestgebruikte vormen om een pakketje samen te stellen zijn jar en war.

21
Q

Wat is de dependency-tag?

A

Dependency’s kun je toevoegen door een of meerdere dependency-tags te gebruiken binnen een dependencies-tag

22
Q

Wat is de dependency-tag?

A

Dependency’s kun je toevoegen door een of meerdere dependency-tags te gebruiken binnen een dependencies-tag

23
Q

Wat zijn transitieve dependency’s?

A

Net als het project waar je je POM voor schrijft, zal ook een dependency die je zelf nodig hebt een aantal dependency’s hebben. Dit noemen we ook wel transitieve dependency’s.

24
Q

Wat zijn transitieve dependency’s?

A

Net als het project waar je je POM voor schrijft, zal ook een dependency die je zelf nodig hebt een aantal dependency’s hebben. Dit noemen we ook wel transitieve dependency’s.

Een lijst met transitieve dependencies kan je genereren met de mvn:dependency-tree commando. Dit geeft per dependency aan welke transitieve dependency’s hierbij horen.

25
Q

Waarom is Maven minder geschikt voor grote projecten?

A

Als je een groot project hebt met veel dependency’s, is het mogelijk dat je met de dependency hell te maken krijgt. Dit komt door de manier waarop Maven omgaat met dependency versies.

De dependency hell kan voorkomen zodra je binnen je project naar dependency’s verwijst die gemeenschappelijke transitieve dependency’s hebben. Maven kan hier prima mee omgaan zolang deze transitieve dependency’s maar van dezelfde versie zijn (links). Zodra dit niet het geval is (rechts), zal Maven proberen beide versies te gebruiken met alle gevolgen van dien.

Om dit te verhelpen, kun je ervoor kiezen om de conflicterende dependency’s te upgraden zodat ze dezelfde versie zijn, of door deze te excluden. Dit kun je doen door een specifieke exclusions-tag toe te voegen binnen de desbetreffende dependency. Het eindresultaat zal hetzelfde zijn: er moet een versie van de dependency overblijven.

26
Q

Wat is de plugin-tag?

A

Met behulp van plug-ins is het mogelijk om Mavens functionaliteit uit te breiden. Zo is het mogelijk om het buildproces aan te passen, of extra rapportage over de code te genereren.

Om naar een plug-in te verwijzen dien je de plugins-tag te gebruiken met een of meerdere plugin-tags daar binnenin.

27
Q

Hoe print je de POM na het toepassen van inheritance, interpolation en profiles?

A

mvn help:effective-pom

28
Q

Wat is inheritance in Maven?

A

Binnen de POMs van Maven is het mogelijk om configuratie te overerven, zodat hergebruik wordt bevorderd en het makkelijker onderhoudbaar wordt.

29
Q

Wat is de super-POM?

A

Standaard erft iedere POM van de super-POM. Dit is een door Maven beschikbaar gestelde configuratie die een lijst aan conventies implementeert. Zolang een POM geen specifieke POM overerft, wordt de super-POM als parent gehandhaafd.

Hierin staan onder andere de standaard repository’s en plug-ins, mappenstructuur en wat configuratie van de plug-ins.

30
Q

Hoe zorg je ervoor dat een (parent) pom zelf geen artifact kan produceren, maar wel beschikbaar is voor overerving?

A

Zet hiervoor de packaging voor de parent-POM naar het type pom.

31
Q

Hoe verwijs je vanuit de child-pom naar een parent pom?

A

Binnen de project-POMs kun je vervolgens naar de parent verwijzen door middel van de parent-tag. Hierin kun je de groep, naam, versie en optioneel een pad voor de POM opgeven.

32
Q

Maven maakt gebruik van XML, waar maakt Gradle gebruik van?

A

Groovy

33
Q

Wat is het voordeel van het gebruik van Groovy (ten opzichte van XML)

A

Hierdoor is het mogelijk om binnen je Gradle build-bestanden logica op te nemen en daadwerkelijk te programmeren.

34
Q

Wat zijn Repositories in Maven en Gradle?

A

Hiermee kan je specificeren waarvandaan je artifacten wilt ophalen

Het is ook mogelijk om de Maven-repository hiervoor te gebruiken. Je kunt dit doen door de methode mavenCentral() aan te roepen. Je kunt ook mavenLocal() gebruiken om je lokale Maven-cache te gebruiken.

repositories {
mavenCentral()
}

Met behulp van speciale sleutelwoorden zoals ivy en maven is het ook mogelijk om aan te geven hoe externe repository’s moeten worden behandeld.

35
Q

Wat zijnd de scopes binnen Gradle?

A
  • implementation - wordt gebruikt door het project en wordt niet beschikbaar gemaakt voor projecten die deze artifact als dependency hebben
  • api - wordt gebruikt door het project en wordt wel beschikbaar gemaakt voor projecten die deze artifact als dependency hebben
  • compile - tegenwoordig onderverdeeld in implementation en api
  • runtime - alleen run-time beschikbaar
  • testCompile - tijdens compilatie benodigd
  • testRuntime - alleen run-time tijdens test benodigd
36
Q

Wat is Publication in Gradle?

A

Het is mogelijk om de artifact van het project dat je maakt te kopiëren naar de lokale repository. Vanuit daar is het mogelijk om deze te uploaden naar een externe repository.

37
Q

Met de Java plug-in is het mogelijk om je Java-project te compileren en bijvoorbeeld artifacten te maken. Welke operaties kan je gebruiken met deze plugin?

A
  • :compileJava - om het project te compileren, genereert ook artifacten van dependency’s
  • :jar - om een artifact te maken van het huidige project
  • :test - om unit tests te draaien
  • :check - om statische code analyse te draaien
  • :build - om zowel de tests te draaien als het artifact te maken
38
Q

Wat is continuous integration?

A

Continuous integration (CI) is de praktijk van het automatiseren van de integratie van codewijzigingen van meerdere bijdragers in een enkel softwareproject.

Het is een primaire DevOps-best practice, waardoor ontwikkelaars vaak codewijzigingen kunnen samenvoegen in een centrale repository waar builds en tests vervolgens worden uitgevoerd.

39
Q

Wat is continuous delivery?

A

Continuous delivery is een uitbreiding van continuous integration, omdat alle codewijzigingen na de bouwfase automatisch worden geïmplementeerd in een test- en/of productieomgeving.

Dit betekent dat u naast geautomatiseerd testen beschikt over een geautomatiseerd releaseproces en dat u uw applicatie op elk moment kunt implementeren door op een knop te klikken.

40
Q

Wat is continuous deployment?

A

Continuous deployment gaat een stap verder dan continuous delivery. Met deze praktijk wordt elke wijziging die alle stadia van de productiepijplijn doorloopt, vrijgegeven aan de klanten. Er is geen menselijke tussenkomst en alleen een mislukte test zal voorkomen dat een nieuwe wijziging in de productie wordt geïmplementeerd.

41
Q

Gegeven een plugin voor Maven, welke tag en value moeten we toevoegen om een actie bij de maven install phase uit te voeren?

A

install