1.1 Store programmer

Vi har allerede lært å skrive små programmer, så nå skal vi lære å skrive store. Som du vet, jo større og mer kompleks programmet er, jo mer penger betales for utviklingen :) Og la oss starte med litt bakgrunn ...

Etter hvert som programmene vokser i størrelse, står utviklere overfor to nye utfordringer:

  • Et stort antall mennesker jobber med det samme programmet.
  • Det er ingen slik person som kjenner hele koden til programmet.

Svært ofte begynte det å oppstå situasjoner når en programmerer fikset en feil på ett sted i programmet og samtidig brøt noe på et annet. Utgivelsesdokumentasjonen har til og med denne vitsen:

Liste over endringer:

  • Rettet gamle feil :)
  • Lagt til nye :(

Så kom de opp med to tilnærminger til å løse dette problemet: teknisk og ledelsesmessig.

Den tekniske tilnærmingen var at programmer ble delt inn i deler: biblioteker og moduler . Hver slik modul var en liten murstein som store prosjekter deretter ble bygget av. Biblioteker er slike universelle komponenter som kan brukes i forskjellige programmer.

Ledertilnærmingen var enda mer interessant - de begrenset antall personer som kunne jobbe med ett prosjekt/bibliotek. Empirisk kom de til og med opp med en regel: teamet skulle være så stort at "det kunne mates med to pizzaer . " Dette betyr vanligvis at hvis det er mer enn 8 personer som jobber med et prosjekt , må det deles inn i to prosjekter.

Det har blitt populært i Java-utviklerfellesskapet å skrive biblioteker for alle anledninger og gjøre dem offentlig tilgjengelige. Dermed kunne ikke Java-programmerere skrive den samme koden igjen (som ofte var rå og inneholdt feil), men bruke ferdige og velprøvde løsninger .

Et ekstra insentiv var det faktum at Java-språket fikk stor popularitet når man skrev serversideløsninger (det fungerte på backend). For det første har serverprogramvare høyere krav til pålitelighet, og bruk av tidstestede biblioteker er alltid å foretrekke fremfor å skrive din egen kode.

For det andre har servere praktisk talt ingen begrensninger på størrelsen på koden. Utvikleren av en mobilapplikasjon prøver å stappe den inn i 10 megabyte, en desktop-applikasjon - i 100 megabyte. Og en Java backend-utvikler kan stappe flere titalls gigabyte med biblioteker inn i et prosjekt, og ingen vil si et ord til ham :)

Dette er forresten ikke en spøk. Du kan lett komme over et backend-prosjekt med flere dusin moduler og et par hundre biblioteker. Men det har blitt ekstremt vanskelig å beskrive (og endre!) bygge manus for slike prosjekter.

Og så dukket Maven opp.

1.2 Introduksjon til Maven

Maven er et spesielt "rammeverk" for prosjektbyggingsledelse. Den standardiserer 3 ting:
  • Beskrivelse av prosjektet;
  • Prosjekt bygge skript;
  • Avhengigheter mellom biblioteker.

Mavens forgjenger var Ant , og etterfølgeren er Gradle . Men det var Maven som utviklet og perfeksjonerte de tre listede standardene, og som også regulerte deres interaksjon. Det var han som brakte arbeidet til Java-samfunnene til et nytt nivå. La oss se på det mer detaljert.

Maven

Teknisk sett er Maven et spesielt program/tjeneste, hvis hovedformål er å administrere prosessen med byggeprosjekter . Den kan enkelt lastes ned som et arkiv og pakkes ut til en hvilken som helst katalog. Du trenger ikke et spesielt installatør for dette.

Hun har ikke et grafisk grensesnitt - alle kommandoer blir gitt til henne ved hjelp av konsollen . For å gjøre det enda mer behagelig å jobbe med det, anbefales det å registrere spesielle miljøvariabler i operativsystemet ditt.

Maven har også et spesielt depot (katalog / mappe) der den lagrer bibliotekene som den bruker når den bygger prosjekter. Du må velge en mappe på disken og tilordne den som et depot.

En annen interessant ting er tilstedeværelsen av et globalt Maven-depot for alle biblioteker, men vi vil snakke om dette litt senere.

1.3 Last ned og installer Maven

Maven har en offisiell side maven.apache.org . Det er mye dokumentasjon på prosjektet, så hvis du har problemer eller ytterligere spørsmål - kom innom, ikke vær sjenert.

Også på nedlastingssiden ( https://maven.apache.org/download.cgi ) kan du laste ned maven-arkivet (apache-maven-3.8.5-bin.zip). Det utpakkede arkivet vil ta et sted rundt 10 MB, selv om det lokale maven-lageret til slutt vil kreve flere hundre megabyte minne.

Maven er skrevet i Java og krever en JRE på minst versjon 7, samt definerte JAVA_HOME miljøvariabler.

Bare lag en mappe for Maven på datamaskinen din, for eksempel d:\devtools , og pakk ut arkivet med Maven inn i det. Som et resultat bør du få en mappe som d:\devtools\maven\bin , hvor hovedbinærene til prosjektet vil være plassert.

1.4 Miljøvariabler

Etter det må du legge til banen til bin-mappen fra det utpakkede arkivet til PATH-miljøvariabelen.

For å angi miljøvariabelen i Windows 10, må du gå til Kontrollpanel - System - Avanserte systeminnstillinger. Klikk deretter "Miljøvariabler", finn PATH og velg "Rediger", og legg deretter til banen d:\devtools\maven\bin på slutten av linjen. Vær oppmerksom, banen må føre nøyaktig til søppelposten.

På et Unix-basert OS kan miljøvariabelen legges til med en konsollkommando:

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

Hvis du gjorde alt riktig, må du skrive kommandoen i konsollen: "mvn -v". Som svar vil du se noe sånt som:

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 Lokalt Maven-lager

Du kan også angi en spesiell mappe der Maven vil lagre jar-biblioteker som den vil bruke når den bygger prosjekter. Denne mappen kalles det lokale maven-depotet .

Hvis ingen slik mappe er spesifisert, vil Maven opprette den i gjeldende brukers hjemmekatalog. Min katalog er: C:\Users\Zapp\.m2

Mappen har et ganske spesifikt navn ".m2". Selv om det ikke skremmer Linux-brukere - der er det en ganske vanlig tilnærming til å navngi forskjellige "repositories" og/eller annen lagring av tjenesteinformasjon.

Viktig! Ikke plasser Maven i systemmapper, da den vil trenge skrivetillatelser til disse mappene under drift, noe som kan være av usunn interesse for antivirus- eller operativsystemet.

Maven før versjon 3.5 krevde en miljøvariabel kalt M2_HOME, men dette er ikke lenger nødvendig.

Du kan lese mer om å konfigurere Maven på lenken: https://maven.apache.org/configure.html