1.1 Grote programma's

We hebben al geleerd hoe we kleine programma's moeten schrijven, dus nu gaan we leren hoe we grote programma's moeten schrijven. Zoals u weet, hoe groter en complexer het programma, hoe meer geld er wordt betaald voor de ontwikkeling ervan :) En laten we beginnen met wat achtergrondinformatie ...

Naarmate programma's groter worden, staan ​​ontwikkelaars voor twee nieuwe uitdagingen:

  • Een groot aantal mensen werkt aan hetzelfde programma.
  • Er is niet zo iemand die de volledige code van het programma kent.

Heel vaak begonnen zich situaties voor te doen waarin een programmeur een bug op de ene plaats van het programma repareerde en tegelijkertijd iets in een andere brak. De releasedocumentatie bevat zelfs deze grap:

Lijst met wijzigingen:

  • Oude bugs opgelost :)
  • Nieuwe toegevoegd :(

Vervolgens bedachten ze twee benaderingen om dit probleem op te lossen: technisch en bestuurlijk.

De technische benadering was dat programma's in delen werden opgedeeld: bibliotheken en modules . Elke module was een kleine steen waaruit vervolgens grote projecten werden gebouwd. Bibliotheken zijn zulke universele componenten die in verschillende programma's kunnen worden gebruikt.

De managementbenadering was zelfs nog interessanter - ze beperkten het aantal mensen dat aan één project/bibliotheek kon werken. Empirisch bedachten ze zelfs een regel: het team moest zo groot zijn dat "het met twee pizza's gevoed kon worden " . Dit betekent meestal dat als er meer dan 8 mensen aan een project werken , het in twee projecten moet worden opgesplitst.

Het is populair geworden in de Java-ontwikkelaarsgemeenschap om bibliotheken voor alle gelegenheden te schrijven en deze openbaar beschikbaar te maken. Java-programmeurs konden dus niet opnieuw dezelfde code schrijven (die vaak onbewerkt was en bugs bevatte), maar kant-en-klare en bewezen oplossingen gebruiken .

Een extra stimulans was het feit dat de Java-taal enorm populair werd bij het schrijven van server-side oplossingen (het werkte op de backend). Ten eerste stelt serversoftware hogere eisen aan betrouwbaarheid en het gebruik van beproefde bibliotheken heeft altijd de voorkeur boven het schrijven van uw eigen code.

Ten tweede hebben servers praktisch geen limiet op de grootte van de code. De ontwikkelaar van een mobiele applicatie probeert het in 10 megabytes te proppen, een desktop-applicatie in 100 megabytes. En een Java-backend-ontwikkelaar kan tientallen gigabytes aan bibliotheken in een project proppen en niemand zal een woord tegen hem zeggen :)

Overigens is dit geen grap. Je kunt gemakkelijk een backend-project tegenkomen met enkele tientallen modules en een paar honderd bibliotheken. Maar het is buitengewoon moeilijk geworden om build-scripts voor dergelijke projecten te beschrijven (en te wijzigen!)

En toen verscheen Maven.

1.2 Inleiding tot Maven

Maven is een speciaal "framework" voor projectbouwmanagement. Het standaardiseert 3 dingen:
  • Beschrijving van het project;
  • Projectbouwscripts;
  • Afhankelijkheden tussen bibliotheken.

De voorganger van Maven was Ant en zijn opvolger is Gradle . Maar het was Maven die de drie genoemde standaarden ontwikkelde en perfectioneerde, en ook hun interactie regelde. Hij was het die het werk van Java-gemeenschappen naar een nieuw niveau bracht. Laten we het in meer detail bekijken.

Maven

Technisch gezien is Maven een speciaal programma / service, waarvan het belangrijkste doel is om het proces van bouwprojecten te beheren . Het kan eenvoudig worden gedownload als een archief en uitgepakt in een willekeurige map. Je hebt hiervoor geen speciaal installatieprogramma nodig.

Ze heeft geen grafische interface - alle commando's worden haar gegeven via de console . Om het nog comfortabeler te maken om ermee te werken, is het aan te raden om speciale omgevingsvariabelen in je OS te registreren.

Maven heeft ook een speciale repository (directory / map) waar het de bibliotheken opslaat die het gebruikt bij het bouwen van projecten. U moet een map op de schijf selecteren en deze toewijzen als opslagplaats.

Een ander interessant ding is de aanwezigheid van een wereldwijde Maven-repository voor alle bibliotheken, maar daar zullen we het later over hebben.

1.3 Maven downloaden en installeren

Maven heeft een officiële site maven.apache.org . Er is veel documentatie over het project, dus als je problemen hebt of aanvullende vragen hebt - kom binnen, wees niet verlegen.

Ook op de downloadpagina ( https://maven.apache.org/download.cgi ) kunt u het maven-archief downloaden (apache-maven-3.8.5-bin.zip). Het uitgepakte archief zal ongeveer 10 MB in beslag nemen, hoewel de lokale maven-repository uiteindelijk enkele honderden megabytes aan geheugen nodig zal hebben.

Maven is geschreven in Java en vereist een JRE van minimaal versie 7, evenals gedefinieerde JAVA_HOME-omgevingsvariabelen.

Maak gewoon een map voor Maven op uw computer, bijvoorbeeld d:\devtools , en pak het archief met Maven erin uit. Als resultaat zou u een map zoals d:\devtools\maven\bin moeten krijgen , waar de belangrijkste binaire bestanden van het project zich zullen bevinden.

1.4 Omgevingsvariabelen

Daarna moet u het pad naar de map bin vanuit het uitgepakte archief toevoegen aan de omgevingsvariabele PATH.

Om de omgevingsvariabele in Windows 10 in te stellen, moet u naar Configuratiescherm - Systeem - Geavanceerde systeeminstellingen gaan. Klik vervolgens op "Omgevingsvariabelen", zoek PATH en selecteer "Bewerken", voeg dan het pad d:\devtools\maven\bin toe aan het einde van de regel. Let op, het pad moet exact naar de bin-map leiden.

Op een op Unix gebaseerd besturingssysteem kan de omgevingsvariabele worden toegevoegd met een consoleopdracht:

export PATH=/opt/apache-maven-3.8.5/bin:$PATH

Als je alles goed hebt gedaan, moet je in de console de opdracht typen: "mvn -v". Als reactie ziet u zoiets als:

C:\Users\Zapp>mvn -v
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 15:51:28+0200)
Maven home: T:\apache-maven-3.0.5\bin\..
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.8.0_65\jre
Default locale: en_US, platform encoding: Cp1251
OS name: "windows 7", version: "6.1", arch: "amd64", family: "dos"

1.5 Lokale Maven-opslagplaats

U kunt ook een speciale map instellen waarin Maven jar-bibliotheken opslaat die worden gebruikt bij het bouwen van projecten. Deze map wordt de lokale maven-repository genoemd .

Als zo'n map niet is opgegeven, maakt Maven deze in de thuismap van de huidige gebruiker. Mijn directory is: C:\Users\Zapp\.m2

De map heeft een nogal specifieke naam ".m2". Hoewel het Linux-gebruikers niet afschrikt, is het daar een vrij gebruikelijke benadering om verschillende "repositories" en / of andere opslag van service-informatie een naam te geven.

Belangrijk! Plaats Maven niet in systeemmappen, omdat het tijdens het gebruik schrijfrechten voor deze mappen nodig heeft, wat van ongezond belang kan zijn voor het antivirus- of besturingssysteem.

Maven vóór versie 3.5 vereiste een omgevingsvariabele met de naam M2_HOME, maar dit is niet langer nodig.

U kunt meer lezen over het configureren van Maven via de link: https://maven.apache.org/configure.html