Prosjektbeskrivelse Objektmodell

En av tingene som Maven standardiserte i utgangspunktet var prosjektbeskrivelsen. Før Maven hadde hver IDE sin egen prosjektfil, som lagret informasjon om prosjektet og dets montering (og ofte i binær form).

Maven har kommet opp med en XML-basert, universell, åpen standard som beskriver hva et prosjekt er, hvordan det skal bygges, og hvilke avhengigheter det har ved hjelp av ulike tagger. Prosjektbeskrivelsen er inneholdt i en enkelt fil, vanligvis kalt pom.xml .

Et eksempel på pom.xml- fil :

<?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>eksempel</artifactId>
   <version>1.0-SNAPSHOT</version>

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


</project>

Dette eksemplet har tre ting skrevet:

  • Informasjon om versjonen av maven-prosjektstandarden er blå.
  • Informasjon om selve prosjektet er i rødt.
  • Informasjon om brukte bibliotek er grønn.

La oss se nærmere på pom-filenheten.

Maven prosjektstruktur

Og umiddelbart er spørsmålet: la du merke til det merkelige i det siste eksemplet? Den inneholder ikke informasjon om selve prosjektkoden! Det er ingen ord om hvor java-filer, ressurser, egenskapsfiler, html, byggeskript og lignende er lagret.

Og svaret er enkelt – Maven standardiserte utformingen av prosjektet. Det er flere alternativer for å organisere kode i et prosjekt, og det vanligste er:

Strukturen er litt uvanlig etter standard IDEA-prosjekter, men for det er den universell. 90 % av prosjektene du vil møte i livet ditt vil ha denne mappestrukturen .

Hvis du oppretter et Maven-prosjekt (ved hjelp av IDEA eller ved å bruke konsollen), vil det ha den angitte formen. La oss se hvordan det hele fungerer her.

src- mappen , du gjettet riktig, inneholder kildekoden for prosjektet. Den har to undermapper: hoved og test .

/src/main/java- mappen er roten for alle Java-klasser i prosjektet. Hvis du har en com.codegym.Cat-klasse, vil den være i /src/main/java /com/codegym /Cat.java-mappen . Hvis det er tekst- eller binære ressurser, bør de lagres i /src/main/resources -mappen .

Strukturen til /src/test -mappen er lik strukturen til /src/main -mappen , men den inneholder testene og ressursene deres. Maven vet selv hvordan man kjører de nødvendige testene når man bygger et prosjekt, men vi skal snakke om dette i et eget foredrag.

Det er også en /target- mappe i prosjektet , der Maven vil lagre prosjektet etter at det er bygget. Siden store prosjekter ofte har ikke-trivielle byggeskript, er ingenting lagret i denne mappen.

Det andre formålet med /target -mappen er å cache mellomliggende byggeresultater. Når du bygger et stort prosjekt, kan Maven bare gjenoppbygge den delen av det som har endret seg, og dermed fremskynde byggetiden med flere ganger.

Vel, som et kirsebær på kaken - selve roten til prosjektet er pom.xml-filen. Den inneholder all nødvendig informasjon om prosjektet, som vi vil diskutere nedenfor.

Enhet pom.xml

Til å begynne med er pom-filen xml, så den inneholder standard overskrifter og navnerominformasjon. Dette handler om den rene XML-standarden, så vi vil ikke snakke om det i detalj. Det betyr dette:

<?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">

        …

</prosjekt>

Vanligvis er også den første linjen inne i <project>-taggen en beskrivelse av versjonen av pom-filstandarden. Nesten alltid er det 4.0. Heller ikke dette er av interesse for oss.

De første linjene vi er interessert i ser slik ut:

  <modelVersion>4.0.0</modelVersion>

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

For ikke en gang å forstå hva vi beskriver (program, prosjekt, modul, bibliotek, etc.) i Maven-standarden, kalles alt dette ordet artefakt . Det du ikke kan nekte skaperne av Maven er kjærligheten til standardisering.

De tre taggene du ser betyr:

  • groupId - pakken som applikasjonen tilhører, med tillegg av domenenavnet;
  • artifactId – unik strengnøkkel (prosjekt-ID);
  • versjon - versjon av prosjektet.

Disse tre parameterne er nok til entydig å beskrive enhver artefakt .

Videre, etter beskrivelsen av prosjektet, er det vanligvis en liste over artefakter (biblioteker) som prosjektet bruker. Det ser omtrent slik ut:

   <dependencies>

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

   </dependencies>

I dette eksemplet legger vi til commons-io-biblioteket fra commons-io-pakken, versjon 2.6, til prosjektet vårt.

Ved byggetid vil Maven finne et slikt bibliotek i det globale depotet og legge det til prosjektet ditt. Og forresten, ikke bare Maven kan gjøre dette.

Hvordan IDEA fungerer med Maven

Intellij IDEA er flink til å jobbe med Maven. Hun vet hvordan hun åpner slike prosjekter, lager dem selv, kjører forskjellige byggeskript og forstår de inkluderte bibliotekene perfekt.

Den har til og med sin egen innebygde Maven en stund, men du må fortsatt kunne installere og konfigurere den selv, så denne funksjonen til IDEA ble ikke nevnt tidligere. I teorien kan IDEA ha en konflikt mellom to Mavens, så det er bra for deg å vite at det er to.

Slik oppretter du et nytt Maven-prosjekt i IDEA:

Klikk på menyen Filer > Nytt prosjekt. Velg menypunktet Nytt prosjekt til venstre .

maven prosjekt

La oss avklare noen punkter:

  1. Prosjektnavn;
  2. Mappe for prosjektet;
  3. Prosjektspråket er Java;
  4. Prosjekttypen er Maven.

I Avanserte innstillinger-delen nederst vil IDEA be deg spesifisere goupID, artefaktID og versjon av det nye prosjektet vårt. Disse dataene kan alltid enkelt endres senere. Velg blant de foreslåtte eller skriv inn din egen:

Maven prosjekt 2

Deretter oppretter du et prosjekt som standard på ønsket sted. Som et resultat ser vi strukturen:

Maven-prosjekt 3

Klasser og pakker må opprettes i java-mappen, vi har allerede snakket om dette. Og jeg tror du enkelt kan håndtere det. Vi er klare til å gå videre, men la oss gå litt tilbake, til en viktig sak som vi "hoppet over" litt.