Описание на проекта Обектен модел

Едно от нещата, които Maven стандартизира на първо място, беше описанието на проекта. Преди Maven всяка IDE имаше собствен проектен файл, който съхраняваше информация за проекта и неговото асемблиране (и често в двоична форма).

Maven излезе с базиран на XML, универсален, отворен стандарт, който описва Howво е проект, How трябва да бъде изграден и Howви зависимости има, използвайки различни тагове. Описанието на проекта се съдържа в един файл, обикновено наречен pom.xml .

Примерен файл pom.xml :

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

Този пример съдържа три написани неща:

  • Информацията за versionта на стандарта на проекта maven е синя.
  • Информацията за самия проект е в червено.
  • Информацията за използваните библиотеки е зелена.

Нека разгледаме по-подробно устройството на pom file.

Структура на проекта Maven

И веднага въпросът е: обърнахте ли внимание на странността в последния пример? Не съдържа информация за самия code на проекта! Няма дума за това къде се съхраняват java файлове, ресурси, файлове със свойства, html, скриптове за изграждане и други подобни.

А отговорът е лесен – Maven стандартизира дизайна на проекта. Има няколко опции за организиране на code в рамките на проект, като най-често срещаната е:

Структурата е малко необичайна след стандартните проекти IDEA, но за това е универсална. 90% от проектите, които ще срещнете в живота си, ще имат тази структура на папките .

Ако създадете проект на Maven (използвайки IDEA or използвайки конзолата), той ще приеме указаната форма. Нека видим How работи всичко тук.

Папката src , познахте, съдържа изходния code на проекта. Има две подпапки: основна и тестова .

Папката /src/main/java е основната за всички Java класове в проекта. Ако имате клас com.codegym.Cat, той ще бъде в папката /src/main/java /com/codegym /Cat.java . Ако има текстови or двоични ресурси, те трябва да се съхраняват в папката /src/main/resources .

Структурата на папката /src/test е подобна на структурата на папката /src/main , но съдържа тестовете и техните ресурси. Самият Maven знае How да стартира необходимите тестове при изграждането на проект, но ще говорим за това в отделна лекция.

В проекта има и папка /target , където Maven ще запази проекта, след като бъде изграден. Тъй като големите проекти често имат нетривиални скриптове за изграждане, нищо не се съхранява в тази папка.

Втората цел на папката /target е да кешира междинните резултати от компorрането. Когато изгражда голям проект, Maven може да възстанови само тази част от него, която е променена, като по този начин ускорява времето за изграждане няколко пъти.

Е, като черешка на тортата - в самия корен на проекта е файлът pom.xml. Той съдържа цялата необходима информация за проекта, която ще разгледаме по-долу.

Устройство pom.xml

Първо, pom файлът е xml, така че съдържа стандартните заглавки и информация за пространствата от имена. Това се отнася изцяло за стандарта XML, така че няма да говорим за него в подробности. Това означава следното:

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

        …

</project>

Освен това обикновено първият ред в тага <project> е описание на versionта на стандарта за pom-файл. Почти винаги е 4.0. Това също не ни интересува.

Първите редове, които ни интересуват, изглеждат така:

  <modelVersion>4.0.0</modelVersion>

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

За да не разбираме отново Howво описваме (програма, проект, модул, библиотека и т.н.) в стандарта Maven, всичко това се нарича дума артефакт . Това, което не можете да откажете на създателите на Maven, е любовта към стандартизацията.

Трите етикета, които виждате, означават:

  • groupId - пакетът, към който принадлежи приложението, с добавяне на името на домейна;
  • artifactId – уникален ключ на низ (id на проекта);
  • version - version на проекта.

Тези три параметъра са достатъчни, за да опишат недвусмислено всеки артефакт .

Освен това, след описанието на проекта, обикновено има списък с артефакти (библиотеки), които проектът използва. Изглежда нещо подобно:

   <dependencies>

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

   </dependencies>

В този пример добавяме библиотеката commons-io от пакета commons-io, version 2.6, към нашия проект.

По време на изграждане Maven ще намери такава библиотека в своето глобално хранorще и ще я добави към вашия проект. И между другото, не само Мейвън може да направи това.

Как IDEA работи с Maven

Intellij IDEA е страхотен в работата с Maven. Тя знае How да отваря такива проекти, да ги създава сама, да изпълнява различни скриптове за изграждане и разбира перфектно включените библиотеки.

Той дори има собствен вграден Maven от известно време, но все пак трябва да можете да го инсталирате и конфигурирате сами, така че тази функция на IDEA не беше спомената по-рано. На теория IDEA може да има конфликт между двама Mavens, така че е добре да знаете, че има двама.

Как да създадете нов проект на Maven в IDEA:

Щракнете върху менюто Файлове > Нов проект. Изберете елемента от менюто Нов проект вляво .

проект maven

Нека изясним някои точки:

  1. Име на проекта;
  2. Папка за проекта;
  3. Езикът на проекта е Java;
  4. Типът на проекта е Maven.

В секцията Разширени настройки в долната част IDEA ще ви подкани да посочите goupID, artifactID и versionта на нашия нов проект. Тези данни винаги могат лесно да бъдат променени по-късно. Изберете от предложените or въведете свои:

Проект Maven 2

След това стандартно създайте проект на необходимото място. В резултат на това виждаме структурата:

Проект Maven 3

Класовете и пакетите трябва да бъдат създадени в папката java, вече говорихме за това. И мисля, че лесно ще се справите. Готови сме да продължим, но нека се върнем малко назад, към един важен въпрос, който малко „прескочихме“.