1.1 Malalaking programa

Natutunan na natin kung paano magsulat ng mga maliliit na programa, kaya ngayon ay matututunan natin kung paano magsulat ng mga malalaking programa. Tulad ng alam mo, mas malaki at mas kumplikado ang programa, mas maraming pera ang binabayaran para sa pag-unlad nito :) At magsimula tayo sa isang maliit na background ...

Habang lumalaki ang mga programa, nahaharap ang mga developer ng dalawang bagong hamon:

  • Ang isang malaking bilang ng mga tao ay nagtatrabaho sa parehong programa.
  • Walang ganoong tao na makakaalam ng buong code ng programa.

Kadalasan, ang mga sitwasyon ay nagsimulang lumitaw kapag ang isang programmer ay nag-ayos ng isang bug sa isang lugar ng programa at sa parehong oras ay sinira ang isang bagay sa isa pa. Ang dokumentasyon ng paglabas ay may ganitong biro:

Listahan ng mga pagbabago:

  • Inayos ang mga lumang bug :)
  • Nagdagdag ng mga bago :(

Pagkatapos ay nakaisip sila ng dalawang diskarte sa paglutas ng problemang ito: teknikal at managerial.

Ang teknikal na diskarte ay ang mga programa ay pinaghiwa-hiwalay sa mga bahagi: mga aklatan at mga module . Ang bawat naturang module ay isang maliit na ladrilyo kung saan itinayo noon ang malalaking proyekto. Ang mga aklatan ay mga unibersal na bahagi na maaaring magamit sa iba't ibang mga programa.

Ang diskarte sa pamamahala ay mas kawili-wili - nilimitahan nila ang bilang ng mga tao na maaaring magtrabaho sa isang proyekto/library. Sa empirically, nakabuo pa sila ng isang panuntunan: dapat napakalaki ng team na "maaari itong pakainin ng dalawang pizza . " Karaniwan itong nangangahulugan na kung mayroong higit sa 8 tao na nagtatrabaho sa isang proyekto , kailangan itong hatiin sa dalawang proyekto.

Naging tanyag sa komunidad ng developer ng Java ang pagsulat ng mga aklatan para sa lahat ng okasyon at gawin itong available sa publiko. Kaya, ang mga programmer ng Java ay hindi maisulat muli ang parehong code (na kadalasan ay hilaw at naglalaman ng mga bug), ngunit gumamit ng mga handa at napatunayang solusyon .

Ang isang karagdagang insentibo ay ang katotohanan na ang wikang Java ay nakakuha ng mahusay na katanyagan kapag nagsusulat ng mga solusyon sa panig ng server (nagtrabaho ito sa backend). Una, ang software ng server ay may mas mataas na mga kinakailangan para sa pagiging maaasahan, at ang paggamit ng mga library na sinubok sa oras ay palaging mas mainam kaysa sa pagsulat ng iyong sariling code.

Pangalawa, halos walang limitasyon ang mga server sa laki ng code. Sinusubukan ng developer ng isang mobile application na i-cram ito sa 10 megabytes, isang desktop application - sa 100 megabytes. At ang isang Java backend developer ay maaaring mag-cram ng ilang sampu-sampung gigabytes ng mga library sa isang proyekto at walang sinuman ang magsasabi sa kanya :)

By the way, hindi ito biro. Madali kang makakatagpo ng isang backend na proyekto na may ilang dosenang mga module at ilang daang mga aklatan. Ngunit ito ay naging lubhang mahirap na ilarawan (at baguhin!) bumuo ng mga script para sa mga naturang proyekto.

At pagkatapos ay lumitaw si Maven.

1.2 Panimula sa Maven

Ang Maven ay isang espesyal na "balangkas" para sa pamamahala ng pagbuo ng proyekto. Ito ay nagsa-standardize ng 3 bagay:
  • Paglalarawan ng proyekto;
  • Mga script ng pagbuo ng proyekto;
  • Dependencies sa pagitan ng mga aklatan.

Ang hinalinhan ni Maven ay si Ant , at ang kahalili nito ay si Gradle . Ngunit si Maven ang bumuo at nagperpekto sa tatlong nakalistang pamantayan, at kinokontrol din ang kanilang pakikipag-ugnayan. Siya ang nagdala sa gawain ng mga komunidad ng Java sa isang bagong antas. Tingnan natin ito nang mas detalyado.

Maven

Sa teknikal, ang Maven ay isang espesyal na programa / serbisyo, ang pangunahing layunin kung saan ay upang pamahalaan ang proseso ng pagbuo ng mga proyekto. Maaari itong i-download lamang bilang isang archive at i-unpack sa anumang direktoryo. Hindi mo kailangan ng isang espesyal na installer para dito.

Wala siyang graphical na interface - lahat ng utos ay ibinibigay sa kanya gamit ang console . Upang maging mas komportable na magtrabaho kasama nito, inirerekomenda na magrehistro ng mga espesyal na variable ng kapaligiran sa iyong OS.

Ang Maven ay mayroon ding espesyal na imbakan (direktoryo / folder) kung saan iniimbak nito ang mga aklatan na ginagamit nito kapag nagtatayo ng mga proyekto. Kakailanganin mong pumili ng ilang folder sa disk at italaga ito bilang isang imbakan.

Ang isa pang kawili-wiling bagay ay ang pagkakaroon ng isang pandaigdigang imbakan ng Maven para sa lahat ng mga aklatan, ngunit pag-uusapan natin ito sa ibang pagkakataon.

1.3 I-download at i-install ang Maven

Ang Maven ay may opisyal na site na maven.apache.org . Mayroong maraming dokumentasyon sa proyekto, kaya kung mayroon kang anumang mga paghihirap o karagdagang mga katanungan - pumasok, huwag mahiya.

Gayundin sa pahina ng pag-download ( https://maven.apache.org/download.cgi ) maaari mong i-download ang maven archive (apache-maven-3.8.5-bin.zip). Ang na-unpack na archive ay kukuha ng humigit-kumulang 10 MB, bagaman ang lokal na maven repository ay mangangailangan ng ilang daang megabytes ng memorya.

Ang Maven ay nakasulat sa Java at nangangailangan ng JRE ng hindi bababa sa bersyon 7, pati na rin ang tinukoy na mga variable ng kapaligiran ng JAVA_HOME.

Gumawa lang ng folder para sa Maven sa iyong computer, halimbawa, d:\devtools , at i-extract ang archive na may Maven dito. Bilang resulta, dapat kang makakuha ng isang folder tulad ng d:\devtools\maven\bin , kung saan matatagpuan ang mga pangunahing binary ng proyekto.

1.4 Mga variable ng kapaligiran

Pagkatapos nito, kailangan mong idagdag ang path sa folder ng bin mula sa naka-unpack na archive sa PATH environment variable.

Upang itakda ang variable ng kapaligiran sa Windows 10, kailangan mong pumunta sa Control Panel - System - Advanced na mga setting ng system. Pagkatapos ay i-click ang "Mga Variable ng Kapaligiran", hanapin ang PATH at piliin ang "I-edit", pagkatapos ay idagdag ang landas d:\devtools\maven\bin sa dulo ng linya. Bigyang-pansin, ang landas ay dapat humantong nang eksakto sa folder ng bin.

Sa isang OS na nakabatay sa Unix, maaaring idagdag ang variable ng kapaligiran gamit ang isang console command:

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

Kung ginawa mo nang tama ang lahat, pagkatapos ay sa console kailangan mong i-type ang command: "mvn -v". Bilang tugon, makikita mo ang isang bagay tulad ng:

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 Lokal na Maven Repository

Maaari ka ring magtakda ng isang espesyal na folder kung saan mag-iimbak si Maven ng mga library ng jar na gagamitin nito kapag nagtatayo ng mga proyekto. Ang folder na ito ay tinatawag na lokal na maven repository .

Kung walang tinukoy na folder, gagawin ito ni Maven sa home directory ng kasalukuyang user. Ang aking direktoryo ay: C:\Users\Zapp\.m2

Ang folder ay may medyo partikular na pangalan na ".m2". Bagaman hindi ito nakakatakot sa mga gumagamit ng Linux - doon ito ay isang medyo karaniwang diskarte sa pagbibigay ng pangalan sa iba't ibang "mga repositoryo" at / o anumang iba pang imbakan ng impormasyon ng serbisyo.

Mahalaga! Huwag ilagay ang Maven sa mga folder ng system, dahil kakailanganin nito ang mga pahintulot sa pagsulat sa mga folder na ito sa panahon ng operasyon, na maaaring hindi malusog na interes sa antivirus o operating system.

Ang Maven bago ang bersyon 3.5 ay nangangailangan ng environment variable na tinatawag na M2_HOME, ngunit hindi na ito kinakailangan.

Maaari kang magbasa nang higit pa tungkol sa pag-configure ng Maven sa link: https://maven.apache.org/configure.html