Paglalarawan ng Proyekto Modelo ng Bagay

Ang isa sa mga bagay na na-standardize ni Maven sa unang lugar ay ang paglalarawan ng proyekto. Bago ang Maven, ang bawat IDE ay may sariling file ng proyekto, na nag-imbak ng impormasyon tungkol sa proyekto at pagpupulong nito (at madalas sa binary form).

Nakabuo si Maven ng isang XML-based, unibersal, bukas na pamantayan na naglalarawan kung ano ang isang proyekto, kung paano ito dapat itayo, at kung anong mga dependency ang mayroon ito gamit ang iba't ibang mga tag. Ang paglalarawan ng proyekto ay nakapaloob sa isang file, kadalasang pinangalanang pom.xml .

Isang halimbawa ng pom.xml file :

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

   <groupId>example.com</groupId>
   <artifactId>example</artifactId>
   <version>1.0-SNAPSHOT</version>

   <dependencies>
       <dependency>
           <groupId>commons-io </groupId>
           <artifactId>commons-io</artifactId>
        <version>2.6</version>
        </dependency>
   </dependencies>


</project>

Ang halimbawang ito ay may tatlong bagay na nakasulat:

  • Ang impormasyon tungkol sa bersyon ng maven project standard ay asul.
  • Ang impormasyon tungkol sa mismong proyekto ay kulay pula.
  • Ang impormasyon tungkol sa mga ginamit na aklatan ay berde.

Tingnan natin ang pom file device.

Istraktura ng proyekto ng Maven

At kaagad ang tanong ay: binigyan mo ba ng pansin ang kakaiba sa huling halimbawa? Hindi ito naglalaman ng impormasyon tungkol sa project code mismo! Walang salita kung saan naka-imbak ang mga java file, resources, properties file, html, build script at iba pa.

At ang sagot ay simple - Na-standardize ni Maven ang disenyo ng proyekto. Mayroong ilang mga opsyon para sa pag-aayos ng code sa loob ng isang proyekto, at ang pinakakaraniwan ay:

Ang istraktura ay medyo hindi pangkaraniwan pagkatapos ng karaniwang mga proyekto ng IDEA, ngunit para doon ito ay pangkalahatan. 90% ng mga proyektong makakaharap mo sa iyong buhay ay magkakaroon ng ganitong istraktura ng folder .

Kung gagawa ka ng proyekto ng Maven (gamit ang IDEA o gamit ang console), kukuha ito ng tinukoy na form. Tingnan natin kung paano gumagana ang lahat dito.

Ang src folder , nahulaan mo, ay naglalaman ng source code para sa proyekto. Mayroon itong dalawang subfolder: main at test .

Ang /src/main/java folder ay ang ugat para sa lahat ng mga klase ng Java sa proyekto. Kung mayroon kang klase ng com.codegym.Cat, mapupunta ito sa folder na /src/main/java /com/codegym /Cat.java . Kung mayroong teksto o binary na mapagkukunan, dapat na nakaimbak ang mga ito sa /src/main/resources folder .

Ang istraktura ng /src/test folder ay katulad ng istraktura ng /src/main folder , ngunit naglalaman ito ng mga pagsubok at kanilang mga mapagkukunan. Alam mismo ni Maven kung paano patakbuhin ang mga kinakailangang pagsubok kapag gumagawa ng isang proyekto, ngunit pag-uusapan natin ito sa isang hiwalay na panayam.

Mayroon ding /target na folder sa proyekto , kung saan ise-save ni Maven ang proyekto pagkatapos itong maitayo. Dahil ang mga malalaking proyekto ay kadalasang may mga hindi maliit na build script, walang nakaimbak sa folder na ito.

Ang pangalawang layunin ng /target na folder ay i-cache ang mga intermediate na resulta ng build. Kapag nagtatayo ng isang malaking proyekto, maaari lamang muling itayo ni Maven ang bahagi nito na nagbago, kaya pinabilis ang oras ng pagbuo ng ilang beses.

Well, bilang isang cherry sa cake - sa pinaka-ugat ng proyekto ay ang pom.xml file. Naglalaman ito ng lahat ng kinakailangang impormasyon tungkol sa proyekto, na tatalakayin natin sa ibaba.

Pom.xml ng device

Upang magsimula, ang pom file ay xml, kaya naglalaman ito ng karaniwang mga header at namespaces na impormasyon. Ito ay tungkol sa puro XML na pamantayan, kaya hindi namin ito pag-uusapan nang detalyado. Ibig sabihin nito:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3 .org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

        …

</proyekto>

Gayundin, kadalasan ang unang linya sa loob ng <project> tag ay isang paglalarawan ng bersyon ng pom-file standard. Halos palaging ito ay 4.0. Ito rin, ay walang interes sa amin.

Ang mga unang linya na interesado kami ay ganito ang hitsura:

  <modelVersion>4.0.0</modelVersion>

  <groupId>com.sample.app</groupId>
  <artifactId>new-app</artifactId>
  <version>1.0-SNAPSHOT</version>

Upang hindi na maunawaan muli kung ano ang inilalarawan namin (programa, proyekto, module, library, atbp.) sa pamantayan ng Maven, lahat ito ay tinatawag na salitang artifact . Ang hindi mo maaaring tanggihan ang mga lumikha ng Maven ay ang pag-ibig sa standardisasyon.

Ang ibig sabihin ng tatlong tag na nakikita mo ay:

  • groupId - ang package kung saan nabibilang ang application, kasama ang pagdaragdag ng domain name;
  • artifactId – natatanging string key (project id);
  • bersyon - bersyon ng proyekto.

Ang tatlong parameter na ito ay sapat na upang malinaw na ilarawan ang anumang artifact .

Dagdag pa, pagkatapos ng paglalarawan ng proyekto, karaniwang mayroong listahan ng mga artifact (mga aklatan) na ginagamit ng proyekto. Mukhang ganito:

   <dependencies>

       <dependency>
           <groupId>commons-io</groupId>
           <artifactId>commons-io</artifactId>
           <version>2.6</version>
       </dependency>

   </dependencies>

Sa halimbawang ito, idinaragdag namin ang library ng commons-io mula sa package na commons-io, bersyon 2.6, sa aming proyekto.

Sa oras ng pagtatayo, makakahanap si Maven ng ganoong library sa global repository nito at idagdag ito sa iyong proyekto. At siya nga pala, hindi lang si Maven ang makakagawa nito.

Paano gumagana ang IDEA kay Maven

Mahusay ang Intellij IDEA sa pakikipagtulungan kay Maven. Alam niya kung paano buksan ang mga naturang proyekto, likhain ang mga ito, magpatakbo ng iba't ibang mga script ng build, at lubos na nauunawaan ang mga kasamang aklatan.

Mayroon pa itong sariling built-in na Maven sa loob ng ilang panahon, ngunit kailangan mo pa ring mai-install at mai-configure ito nang mag-isa, kaya hindi nabanggit kanina ang feature na ito ng IDEA. Sa teorya, ang IDEA ay maaaring magkaroon ng salungatan sa pagitan ng dalawang Maven, kaya magandang malaman mo na mayroong dalawa.

Paano lumikha ng isang bagong proyekto ng Maven sa IDEA:

I-click ang menu na Mga File > Bagong Proyekto. Piliin ang menu item na Bagong Proyekto sa kaliwa .

proyekto ng maven

Linawin natin ang ilang punto:

  1. Pangalan ng proyekto;
  2. Folder para sa proyekto;
  3. Ang wika ng proyekto ay Java;
  4. Ang uri ng proyekto ay Maven.

Sa seksyong Advanced na Mga Setting sa ibaba, ipo-prompt ka ng IDEA na tukuyin ang goupID, artifactID, at bersyon ng aming bagong proyekto. Ang data na ito ay palaging madaling mabago sa ibang pagkakataon. Pumili mula sa mga iminungkahing o ipasok ang iyong sarili:

Maven project 2

Susunod, karaniwang lumikha ng isang proyekto sa kinakailangang lokasyon. Bilang resulta, nakikita natin ang istraktura:

Maven project 3

Ang mga klase at pakete ay dapat malikha sa java folder, napag-usapan na natin ito. At sa tingin ko madali mo itong mahawakan. Handa na tayong magpatuloy, ngunit bumalik tayo ng kaunti, sa isang mahalagang isyu na medyo "nilaktawan" natin.