1.1 Store programmer

Vi har allerede lært at skrive små programmer, så nu vil vi lære at skrive store. Som du ved, jo større og mere kompleks programmet er, jo flere penge bliver der betalt for dets udvikling :) Og lad os starte med lidt baggrund ...

Efterhånden som programmer vokser i størrelse, står udviklere over for to nye udfordringer:

  • Et stort antal mennesker arbejder på det samme program.
  • Der er ingen sådan person, der ville kende hele programmets kode.

Meget ofte begyndte der at opstå situationer, når en programmør rettede en fejl et sted i programmet og samtidig brød noget et andet. Udgivelsesdokumentationen har endda denne joke:

Liste over ændringer:

  • Rettet gamle fejl :)
  • Tilføjet nye :(

Så kom de med to tilgange til at løse dette problem: teknisk og ledelsesmæssig.

Den tekniske tilgang var, at programmer blev opdelt i dele: biblioteker og moduler . Hvert sådant modul var en lille mursten, hvorfra store projekter derefter blev bygget. Biblioteker er sådanne universelle komponenter, der kan bruges i forskellige programmer.

Den ledelsesmæssige tilgang var endnu mere interessant - de begrænsede antallet af personer, der kunne arbejde på ét projekt/bibliotek. Empirisk kom de endda med en regel: holdet skulle være så stort, at "det kunne fodres med to pizzaer . " Det betyder normalt, at hvis der er mere end 8 personer, der arbejder på et projekt , så skal det opdeles i to projekter.

Det er blevet populært i Java-udviklerfællesskabet at skrive biblioteker til alle lejligheder og gøre dem offentligt tilgængelige. Java-programmører kunne således ikke skrive den samme kode igen (som ofte var rå og indeholdt fejl), men bruge færdige og gennemprøvede løsninger .

Et yderligere incitament var det faktum, at Java-sproget vandt stor popularitet, når man skrev serverside-løsninger (det fungerede på backend). For det første stiller serversoftware højere krav til pålidelighed, og brug af tidstestede biblioteker er altid at foretrække frem for at skrive din egen kode.

For det andet har servere praktisk talt ingen grænser for størrelsen af ​​koden. Udvikleren af ​​en mobilapplikation forsøger at proppe den ind i 10 megabyte, en desktopapplikation - i 100 megabyte. Og en Java-backend-udvikler kan proppe flere titusvis af gigabyte af biblioteker ind i et projekt, og ingen vil sige et ord til ham :)

Det er i øvrigt ikke en joke. Du kan nemt støde på et backend-projekt med flere dusin moduler og et par hundrede biblioteker. Men det er blevet ekstremt svært at beskrive (og ændre!) bygge scripts til sådanne projekter.

Og så dukkede Maven op.

1.2 Introduktion til Maven

Maven er en speciel "ramme" til projektbygningsstyring. Det standardiserer 3 ting:
  • Beskrivelse af projektet;
  • Projektopbygningsscripts;
  • Afhængigheder mellem biblioteker.

Mavens forgænger var Ant , og dens efterfølger er Gradle . Men det var Maven, der udviklede og perfektionerede de tre listede standarder, og også regulerede deres interaktion. Det var ham, der bragte Java-samfundenes arbejde til et nyt niveau. Lad os se på det mere detaljeret.

Maven

Teknisk set er Maven et særligt program/service, hvis hovedformål er at styre processen med byggeprojekter . Det kan ganske enkelt downloades som et arkiv og pakkes ud til enhver mappe. Du behøver ikke en speciel installatør til dette.

Hun har ikke en grafisk grænseflade - alle kommandoer gives til hende ved hjælp af konsollen . For at gøre det endnu mere behageligt at arbejde med det, anbefales det at registrere specielle miljøvariabler i dit OS.

Maven har også et særligt arkiv (mappe/mappe), hvor den gemmer de biblioteker, den bruger, når den bygger projekter. Du skal vælge en mappe på disken og tildele den som et lager.

En anden interessant ting er tilstedeværelsen af ​​et globalt Maven-depot for alle biblioteker, men vi vil tale om dette lidt senere.

1.3 Download og installer Maven

Maven har en officiel side maven.apache.org . Der er meget dokumentation på projektet, så hvis du har problemer eller yderligere spørgsmål - kom ind, vær ikke genert.

Også på downloadsiden ( https://maven.apache.org/download.cgi ) kan du downloade maven-arkivet (apache-maven-3.8.5-bin.zip). Det udpakkede arkiv vil tage et sted omkring 10 MB, selvom det lokale maven-lager til sidst vil kræve flere hundrede megabyte hukommelse.

Maven er skrevet i Java og kræver en JRE på mindst version 7, samt definerede JAVA_HOME miljøvariabler.

Du skal bare oprette en mappe til Maven på din computer, for eksempel d:\devtools , og udtrække arkivet med Maven ind i det. Som et resultat bør du få en mappe som d:\devtools\maven\bin , hvor de vigtigste binære filer i projektet vil være placeret.

1.4 Miljøvariabler

Derefter skal du tilføje stien til bin-mappen fra det udpakkede arkiv til PATH-miljøvariablen.

For at indstille miljøvariablen i Windows 10 skal du gå til Kontrolpanel - System - Avancerede systemindstillinger. Klik derefter på "Environment Variables", find PATH og vælg "Rediger", og tilføj derefter stien d:\devtools\maven\bin til slutningen af ​​linjen. Vær opmærksom, stien skal føre nøjagtigt til skraldespanden.

På et Unix-baseret OS kan miljøvariablen tilføjes med en konsolkommando:

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

Hvis du gjorde alt korrekt, skal du i konsollen skrive kommandoen: "mvn -v". Som svar vil du se noget 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å indstille en speciel mappe, hvor Maven gemmer jar-biblioteker, som den vil bruge, når den bygger projekter. Denne mappe kaldes det lokale maven-lager .

Hvis der ikke er angivet en sådan mappe, vil Maven oprette den i den aktuelle brugers hjemmemappe. Mit bibliotek er: C:\Users\Zapp\.m2

Mappen har et ret specifikt navn ".m2". Selvom det ikke skræmmer Linux-brugere - der er det en ret almindelig tilgang til at navngive forskellige "repositories" og/eller enhver anden lagring af serviceinformation.

Vigtig! Placer ikke Maven i systemmapper, da den vil have brug for skrivetilladelser til disse mapper under drift, hvilket kan være af usund interesse for antivirus- eller operativsystemet.

Maven før version 3.5 krævede en miljøvariabel kaldet M2_HOME, men dette er ikke længere nødvendigt.

Du kan læse mere om konfiguration af Maven på linket: https://maven.apache.org/configure.html