Opis projektu Model obiektowy

Jedną z rzeczy, które Maven ustandaryzował w pierwszej kolejności, był opis projektu. Przed Mavenem każde IDE miało swój własny plik projektu, w którym przechowywane były informacje o projekcie i jego asemblerze (często w formie binarnej).

Maven opracował oparty na XML, uniwersalny, otwarty standard, który opisuje, czym jest projekt, jak powinien być zbudowany i jakie ma zależności za pomocą różnych tagów. Opis projektu jest zawarty w pojedynczym pliku, zwykle o nazwie pom.xml .

Przykładowy plik pom.xml :

<?xml version="1.0" encoding="UTF-8"?>
<projekt 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>
        </zależność>
   </zależność>


</projekt>

W tym przykładzie są napisane trzy rzeczy:

  • Informacja o wersji standardu projektu maven jest niebieska.
  • Informacje o samym projekcie są zaznaczone na czerwono.
  • Informacje o używanych bibliotekach są zielone.

Przyjrzyjmy się bliżej urządzeniu z plikiem pom.

Struktura projektu Mavena

I od razu pojawia się pytanie: czy zwróciłeś uwagę na dziwność w ostatnim przykładzie? Nie zawiera informacji o samym kodzie projektu! Nie ma słowa o tym, gdzie przechowywane są pliki java, zasoby, pliki właściwości, html, skrypty kompilacji i tym podobne.

A odpowiedź jest prosta – Maven ustandaryzował projekt projektu. Istnieje kilka opcji organizowania kodu w ramach projektu, a najczęstsze to:

Struktura jest trochę nietypowa po standardowych projektach IDEA, ale za to uniwersalna. 90% projektów, które napotkasz w swoim życiu, będzie miało taką strukturę folderów .

Jeśli utworzysz projekt Mavena (za pomocą IDEA lub za pomocą konsoli), to przybierze on określoną formę. Zobaczmy, jak to wszystko działa tutaj.

Jak zgadłeś, folder src zawiera kod źródłowy projektu. Ma dwa podfoldery: main i test .

Folder /src/main/java jest katalogiem głównym dla wszystkich klas Java w projekcie. Jeśli masz klasę com.codegym.Cat, będzie ona znajdować się w folderze /src/main/java /com/codegym /Cat.java . Jeśli istnieją zasoby tekstowe lub binarne, należy je przechowywać w folderze /src/main/resources .

Struktura folderu /src/test jest podobna do struktury folderu /src/main , ale zawiera testy i ich zasoby. Sam Maven wie, jak przeprowadzić niezbędne testy podczas budowania projektu, ale o tym porozmawiamy w osobnym wykładzie.

W projekcie znajduje się również folder /target , w którym Maven zapisze projekt po jego zbudowaniu. Ponieważ duże projekty często mają nietrywialne skrypty kompilacji, nic nie jest przechowywane w tym folderze.

Drugim celem folderu /target jest buforowanie pośrednich wyników kompilacji. Podczas budowania dużego projektu Maven może odbudować tylko tę jego część, która uległa zmianie, co kilkakrotnie przyspiesza czas budowy.

Cóż, jako wisienka na torcie - u samego źródła projektu znajduje się plik pom.xml. Zawiera wszystkie niezbędne informacje o projekcie, które omówimy poniżej.

pom.xml urządzenia

Na początek plik pom to xml, więc zawiera standardowe nagłówki i informacje o przestrzeniach nazw. Dotyczy to wyłącznie standardu XML, więc nie będziemy o tym szczegółowo mówić. oznacza to:

<?xml version="1.0" encoding="UTF-8"?>
<projekt 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">

        …

</projekt>

Ponadto zazwyczaj pierwsza linia wewnątrz znacznika <project> to opis wersji standardu plików pom. Prawie zawsze jest to 4,0. To też nas nie interesuje.

Interesujące nas pierwsze linie wyglądają tak:

  <modelVersion>4.0.0</modelVersion>

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

Aby po raz kolejny nie zrozumieć, co opisujemy (program, projekt, moduł, biblioteka itp.) w standardzie Maven, to wszystko nazywamy słowem artefakt . Twórcom Mavena nie można odmówić zamiłowania do standaryzacji.

Trzy tagi, które widzisz, oznaczają:

  • groupId - pakiet, do którego należy aplikacja, z dodatkiem nazwy domeny;
  • artefaktId – unikalny klucz łańcuchowy (identyfikator projektu);
  • wersja - wersja projektu.

Te trzy parametry w zupełności wystarczą, aby jednoznacznie opisać dowolny artefakt .

Ponadto po opisie projektu zwykle znajduje się lista artefaktów (bibliotek), z których projekt korzysta. Wygląda to mniej więcej tak:

   <dependencies>

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

   </dependencies>

W tym przykładzie dodamy do naszego projektu bibliotekę commons-io z pakietu commons-io w wersji 2.6.

W czasie budowania Maven znajdzie taką bibliotekę w swoim globalnym repozytorium i doda ją do Twojego projektu. A tak przy okazji, nie tylko Maven to potrafi.

Jak IDEA współpracuje z Mavenem

Intellij IDEA świetnie współpracuje z Mavenem. Wie, jak otwierać takie projekty, samodzielnie je tworzyć, uruchamiać różne skrypty budujące i doskonale rozumie dołączone biblioteki.

Od jakiegoś czasu ma nawet własnego wbudowanego Mavena, ale nadal musisz mieć możliwość samodzielnego zainstalowania i skonfigurowania, więc ta funkcja IDEA nie została wcześniej wspomniana. Teoretycznie IDEA może mieć konflikt między dwoma Mavenami, więc dobrze jest wiedzieć, że jest ich dwóch.

Jak stworzyć nowy projekt Maven w IDEA:

Kliknij menu Pliki > Nowy projekt. Wybierz pozycję menu Nowy projekt po lewej stronie .

projekt mavena

Wyjaśnijmy kilka kwestii:

  1. Nazwa Projektu;
  2. Folder dla projektu;
  3. Językiem projektu jest Java;
  4. Typ projektu to Maven.

W sekcji Ustawienia zaawansowane na dole IDEA poprosi o podanie identyfikatora goupID, identyfikatora artefaktu i wersji naszego nowego projektu. Dane te zawsze można później łatwo zmienić. Wybierz spośród sugerowanych lub wprowadź własne:

Projekt Mavena 2

Następnie standardowo utwórz projekt w wymaganej lokalizacji. W rezultacie widzimy strukturę:

Projekt Mavena 3

Klasy i pakiety muszą być tworzone w folderze java, już o tym rozmawialiśmy. I myślę, że bez problemu sobie z tym poradzisz. Jesteśmy gotowi, aby przejść dalej, ale cofnijmy się trochę, do jednej ważnej kwestii, którą trochę „przeskoczyliśmy”.