0 added
0 removed
Original
2026-01-01
Modified
2026-02-21
1
<p><a>#статьи</a></p>
1
<p><a>#статьи</a></p>
2
<ul><li>5 сен 2023</li>
2
<ul><li>5 сен 2023</li>
3
<li>0</li>
3
<li>0</li>
4
</ul><p>Собираем проект на Java быстро, без регистрации и СМС.</p>
4
</ul><p>Собираем проект на Java быстро, без регистрации и СМС.</p>
5
<p>Иллюстрация: Lip Kee / Apache Software Foundation / Wikimedia Commons / John Fowler / Maksym Ostrozhynskyy / Brett Wharton / Ben Kolde / Unsplash / Дима Руденок для Skillbox Media</p>
5
<p>Иллюстрация: Lip Kee / Apache Software Foundation / Wikimedia Commons / John Fowler / Maksym Ostrozhynskyy / Brett Wharton / Ben Kolde / Unsplash / Дима Руденок для Skillbox Media</p>
6
<p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
6
<p>Пишет о сетях, инструментах для разработчиков и языках программирования. Любит готовить, играть в инди‑игры и программировать на Python.</p>
7
<p>Если спросить у Java-разработчика, кто его лучший друг, то, скорее всего, он расскажет про Apache Maven. Это фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (Project Object Model).</p>
7
<p>Если спросить у Java-разработчика, кто его лучший друг, то, скорее всего, он расскажет про Apache Maven. Это фреймворк для автоматизации сборки проектов на основе описания их структуры в файлах на языке POM (Project Object Model).</p>
8
<p>Пока что звучит сложно, но в этой статье мы разберёмся в основах работы со сборщиком проектов и заглянем в его сердце - файл pom.xml.</p>
8
<p>Пока что звучит сложно, но в этой статье мы разберёмся в основах работы со сборщиком проектов и заглянем в его сердце - файл pom.xml.</p>
9
<p>Что вы узнаете про Maven:</p>
9
<p>Что вы узнаете про Maven:</p>
10
<ul><li><a>зачем он нужен и есть ли у него аналоги</a>;</li>
10
<ul><li><a>зачем он нужен и есть ли у него аналоги</a>;</li>
11
<li><a>как его правильно установить на компьютер и можно ли обойтись без этого</a>;</li>
11
<li><a>как его правильно установить на компьютер и можно ли обойтись без этого</a>;</li>
12
<li><a>как его настроить и собрать свой первый проект</a>;</li>
12
<li><a>как его настроить и собрать свой первый проект</a>;</li>
13
<li><a>зачем ему репозитории и какими они бывают</a>.</li>
13
<li><a>зачем ему репозитории и какими они бывают</a>.</li>
14
</ul><p>Maven - это инструмент для автоматической сборки проектов на Java и других языках программирования. Он помогает разработчикам правильно подключить библиотеки и фреймворки, управлять их версиями, выстроить структуру проекта и составить к нему документацию.</p>
14
</ul><p>Maven - это инструмент для автоматической сборки проектов на Java и других языках программирования. Он помогает разработчикам правильно подключить библиотеки и фреймворки, управлять их версиями, выстроить структуру проекта и составить к нему документацию.</p>
15
<p>Например, чтобы собрать приложение для управления базами данных на Java, нам понадобятся фреймворки Spring и Hibernate, библиотека JUnit для модульного тестирования и сама база данных. Всё это можно собрать в одном проекте вручную, но могут быть трудности из-за большого числа зависимостей. Здесь на помощь разработчикам приходит Maven. Он автоматически добавит эти или другие зависимости в проект и соберёт его в исполняемый файл.</p>
15
<p>Например, чтобы собрать приложение для управления базами данных на Java, нам понадобятся фреймворки Spring и Hibernate, библиотека JUnit для модульного тестирования и сама база данных. Всё это можно собрать в одном проекте вручную, но могут быть трудности из-за большого числа зависимостей. Здесь на помощь разработчикам приходит Maven. Он автоматически добавит эти или другие зависимости в проект и соберёт его в исполняемый файл.</p>
16
<p>Maven - не единственный сборщик проектов. Некоторые разработчики используют его аналоги -<a>Gradle</a>и <a>Ant</a>. Но именно Maven сегодня - золотой стандарт в индустрии.</p>
16
<p>Maven - не единственный сборщик проектов. Некоторые разработчики используют его аналоги -<a>Gradle</a>и <a>Ant</a>. Но именно Maven сегодня - золотой стандарт в индустрии.</p>
17
<p>Maven можно установить вручную или воспользоваться IDE с предустановленным сборщиком. Второй вариант удобнее и быстрее, но начнём мы с обычной установки в операционную систему.</p>
17
<p>Maven можно установить вручную или воспользоваться IDE с предустановленным сборщиком. Второй вариант удобнее и быстрее, но начнём мы с обычной установки в операционную систему.</p>
18
<p><strong>Важно!</strong>Чтобы работать с Java, у вас на компьютере должен быть установлен и настроен JDK. Мы уже писали,<a>как это сделать правильно</a>.</p>
18
<p><strong>Важно!</strong>Чтобы работать с Java, у вас на компьютере должен быть установлен и настроен JDK. Мы уже писали,<a>как это сделать правильно</a>.</p>
19
<p>Скачайте архив со сборщиком для своей операционной системы с <a>официального сайта Apache Maven</a>и распакуйте его. Лучше всего создать для этого отдельную папку, так как путь к ней нам понадобится позже.</p>
19
<p>Скачайте архив со сборщиком для своей операционной системы с <a>официального сайта Apache Maven</a>и распакуйте его. Лучше всего создать для этого отдельную папку, так как путь к ней нам понадобится позже.</p>
20
<p>Если у вас Linux, то установку можно запустить через командную строку:</p>
20
<p>Если у вас Linux, то установку можно запустить через командную строку:</p>
21
sudo команда-вашего-пакетного-менеджера maven<p>Для удобной работы с Maven и его запуска в командной строке или терминале необходимо прописать переменные среды. На разных операционных системах этот процесс различается.</p>
21
sudo команда-вашего-пакетного-менеджера maven<p>Для удобной работы с Maven и его запуска в командной строке или терминале необходимо прописать переменные среды. На разных операционных системах этот процесс различается.</p>
22
<p><strong>Windows</strong></p>
22
<p><strong>Windows</strong></p>
23
<p>Процесс установки на Windows 7, 10 и 11 одинаков. Нажмите правой клавишей мыши на Этот компьютер и выберите пункт меню Свойства. Теперь пройдите через несколько окон: Дополнительные параметры системы → Дополнительно → Переменные среды.</p>
23
<p>Процесс установки на Windows 7, 10 и 11 одинаков. Нажмите правой клавишей мыши на Этот компьютер и выберите пункт меню Свойства. Теперь пройдите через несколько окон: Дополнительные параметры системы → Дополнительно → Переменные среды.</p>
24
<p>В окне Переменные среды найдите переменную Path и нажмите на кнопку Изменить:</p>
24
<p>В окне Переменные среды найдите переменную Path и нажмите на кнопку Изменить:</p>
25
Окно с перечнем всех переменных среды. Хотя обычно они отсортированы по алфавиту, может потребоваться прокрутить список с ними<em>Скриншот: Skillbox Media</em><p>В открывшемся окне нажмите кнопку Создать и укажите полный адрес до папки bin из распакованного архива Maven:</p>
25
Окно с перечнем всех переменных среды. Хотя обычно они отсортированы по алфавиту, может потребоваться прокрутить список с ними<em>Скриншот: Skillbox Media</em><p>В открывшемся окне нажмите кнопку Создать и укажите полный адрес до папки bin из распакованного архива Maven:</p>
26
<em>Скриншот: Skillbox Media</em><p>Проверьте настройку переменных среды. Для этого зайдите в командную строку и введите mvn -v. Если Maven установлен, то появится информация о его версии:</p>
26
<em>Скриншот: Skillbox Media</em><p>Проверьте настройку переменных среды. Для этого зайдите в командную строку и введите mvn -v. Если Maven установлен, то появится информация о его версии:</p>
27
<em>Скриншот: Skillbox Media</em><p><strong>Linux/Mac</strong></p>
27
<em>Скриншот: Skillbox Media</em><p><strong>Linux/Mac</strong></p>
28
<p>Откройте в текстовом редакторе файл ~/.bashrc или ~/.bash_profile в Linux или .zshrc в macOS. Файл находится в домашней директории текущего пользователя. Если файла нет, создайте его и впишите:</p>
28
<p>Откройте в текстовом редакторе файл ~/.bashrc или ~/.bash_profile в Linux или .zshrc в macOS. Файл находится в домашней директории текущего пользователя. Если файла нет, создайте его и впишите:</p>
29
export PATH="<path_to_maven>:$PATH"<p>Вместо path_to_maven указываем путь к файлу ~/.bashrc или ~/.bash_profile в Linux или .zshrc в macOS.</p>
29
export PATH="<path_to_maven>:$PATH"<p>Вместо path_to_maven указываем путь к файлу ~/.bashrc или ~/.bash_profile в Linux или .zshrc в macOS.</p>
30
<p>Проверьте настройку переменных среды. Для этого зайдите в терминал и запустите mvn -n. Должно появиться сообщение с версией Maven:</p>
30
<p>Проверьте настройку переменных среды. Для этого зайдите в терминал и запустите mvn -n. Должно появиться сообщение с версией Maven:</p>
31
<em>Скриншот: Skillbox Media</em><p>Для Mac в последней строке будет указано family: "mac".</p>
31
<em>Скриншот: Skillbox Media</em><p>Для Mac в последней строке будет указано family: "mac".</p>
32
<p>Для работы с Maven мы будем использовать IntelliJ IDEA. Это удобная среда разработки, в которой сборщик проектов установлен из коробки.</p>
32
<p>Для работы с Maven мы будем использовать IntelliJ IDEA. Это удобная среда разработки, в которой сборщик проектов установлен из коробки.</p>
33
<p>Настройки Maven в IDE можно найти в правой части рабочей области после создания проекта на Java:</p>
33
<p>Настройки Maven в IDE можно найти в правой части рабочей области после создания проекта на Java:</p>
34
<em>Скриншот: Skillbox Media</em><p>Начнём работу с создания шаблона проекта. Среда разработки и здесь сэкономит нам время, так как самостоятельно пропишет необходимые параметры.</p>
34
<em>Скриншот: Skillbox Media</em><p>Начнём работу с создания шаблона проекта. Среда разработки и здесь сэкономит нам время, так как самостоятельно пропишет необходимые параметры.</p>
35
<p>Создайте новый проект:</p>
35
<p>Создайте новый проект:</p>
36
<em>Скриншот: Skillbox Media</em><p>Программа предложит выбрать Maven Archetype в качестве шаблона сборки. Кликните на него и в окне преднастроек выберите Archetype quickstart. Нажмите Create:</p>
36
<em>Скриншот: Skillbox Media</em><p>Программа предложит выбрать Maven Archetype в качестве шаблона сборки. Кликните на него и в окне преднастроек выберите Archetype quickstart. Нажмите Create:</p>
37
<em>Скриншот: Skillbox Media</em><p>В окне проекта вы увидите, как Maven зашёл в репозитории и начал что-то скачивать, - это нормально:</p>
37
<em>Скриншот: Skillbox Media</em><p>В окне проекта вы увидите, как Maven зашёл в репозитории и начал что-то скачивать, - это нормально:</p>
38
<em>Скриншот: Skillbox Media</em><p>Слева на экране показана структура проекта. Нам нужен класс App.java, в котором находится метод main. Чтобы найти его, откройте папку src, затем main и java. Внутри App.java хранится небольшой фрагмент кода:</p>
38
<em>Скриншот: Skillbox Media</em><p>Слева на экране показана структура проекта. Нам нужен класс App.java, в котором находится метод main. Чтобы найти его, откройте папку src, затем main и java. Внутри App.java хранится небольшой фрагмент кода:</p>
39
package org.example; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }<p>Метод работает просто - он выводит в консоль сообщение Hello World!.</p>
39
package org.example; /** * Hello world! * */ public class App { public static void main( String[] args ) { System.out.println( "Hello World!" ); } }<p>Метод работает просто - он выводит в консоль сообщение Hello World!.</p>
40
<p>Теперь перейдите к файлу pom.xml. Это основной конфигурационный файл в проекте, который описывает его структуру, зависимости и настройки. Можно сказать, что это главная сила всего Maven.</p>
40
<p>Теперь перейдите к файлу pom.xml. Это основной конфигурационный файл в проекте, который описывает его структуру, зависимости и настройки. Можно сказать, что это главная сила всего Maven.</p>
41
<p>Если открыть файл, то увидим такой код:</p>
41
<p>Если открыть файл, то увидим такой код:</p>
42
<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>org.example</groupId> <artifactId>maven-example</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>maven-example</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project><p>Разберём, что к чему:</p>
42
<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>org.example</groupId> <artifactId>maven-example</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>maven-example</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project><p>Разберём, что к чему:</p>
43
<p>project - корневой элемент, содержащий всю информацию о проекте.</p>
43
<p>project - корневой элемент, содержащий всю информацию о проекте.</p>
44
<p>xmlns, xmlns:xsi, xsi:schemaLocation - это атрибуты для указания пространства имён и схемы для pom.xml. Проще говоря, здесь указано, что должно содержаться в файле и как это всё должно быть расположено.</p>
44
<p>xmlns, xmlns:xsi, xsi:schemaLocation - это атрибуты для указания пространства имён и схемы для pom.xml. Проще говоря, здесь указано, что должно содержаться в файле и как это всё должно быть расположено.</p>
45
<p>modelVersion - версия модели POM, которую данный файл использует. У нас версия 4.0.0.</p>
45
<p>modelVersion - версия модели POM, которую данный файл использует. У нас версия 4.0.0.</p>
46
<p>groupId, artifactId, version - это обязательные элементы для идентификации содержимого проекта.</p>
46
<p>groupId, artifactId, version - это обязательные элементы для идентификации содержимого проекта.</p>
47
<ul><li>groupId - это идентификатор команды. В нашем случае - org.example, как и пакет с классом App. В больших компаниях идентификатор определяет группу или команду разработчиков. Например, представим, как мог бы выглядеть идентификатор компании ACME. Веб-разработчики в ней будут использовать идентификатор группы com.acme.webapps, а мобильные разработчики - com.acme.mobile.</li>
47
<ul><li>groupId - это идентификатор команды. В нашем случае - org.example, как и пакет с классом App. В больших компаниях идентификатор определяет группу или команду разработчиков. Например, представим, как мог бы выглядеть идентификатор компании ACME. Веб-разработчики в ней будут использовать идентификатор группы com.acme.webapps, а мобильные разработчики - com.acme.mobile.</li>
48
<li>artifactId - это идентификатор артефакта. Артефактами Maven называет приложения, пакеты и файлы. Как и идентификатор группы, он нужен, чтобы не запутаться в проекте. По умолчанию идентификатор артефакта соответствует имени проекта, которое мы указали при его создании. У нас это maven-example.</li>
48
<li>artifactId - это идентификатор артефакта. Артефактами Maven называет приложения, пакеты и файлы. Как и идентификатор группы, он нужен, чтобы не запутаться в проекте. По умолчанию идентификатор артефакта соответствует имени проекта, которое мы указали при его создании. У нас это maven-example.</li>
49
<li>version - версия проекта. Меняется при обновлении проекта.</li>
49
<li>version - версия проекта. Меняется при обновлении проекта.</li>
50
</ul><p>packaging - тип упаковки проекта. У нас всё упаковывается в JAR-файл.</p>
50
</ul><p>packaging - тип упаковки проекта. У нас всё упаковывается в JAR-файл.</p>
51
<p>name - имя проекта.</p>
51
<p>name - имя проекта.</p>
52
<p>url - URL-адрес, связанный с проектом.</p>
52
<p>url - URL-адрес, связанный с проектом.</p>
53
<p>properties - здесь указываем переменные проекта. В нашем случае мы прописываем только кодировку, задавая её по умолчанию как UTF-8. Точно так же мы можем указать версии зависимостей, конфигурации плагинов, фильтры ресурсов и другие параметры. Полный список настроек доступен в <a>документации Maven</a>.</p>
53
<p>properties - здесь указываем переменные проекта. В нашем случае мы прописываем только кодировку, задавая её по умолчанию как UTF-8. Точно так же мы можем указать версии зависимостей, конфигурации плагинов, фильтры ресурсов и другие параметры. Полный список настроек доступен в <a>документации Maven</a>.</p>
54
<p>Работают properties так: прописываете информацию в pom.xml, потом подставляете в нужном вам месте конструкцию с названием созданной вами properties - ${имя_properties}. Это если значение нужно упомянуть в pom.xml. В классах значение properties получаем через геттеры:</p>
54
<p>Работают properties так: прописываете информацию в pom.xml, потом подставляете в нужном вам месте конструкцию с названием созданной вами properties - ${имя_properties}. Это если значение нужно упомянуть в pom.xml. В классах значение properties получаем через геттеры:</p>
55
String appVersion = System.getProperty("app.version");<p>dependencies - здесь определяются зависимости проекта - библиотеки, которые будут использоваться. В нашем указана только зависимость от JUnit версии 3.8.1. В dependencies, так же как и для всего проекта, прописываются идентификаторы groupId, artifactId и version. Только здесь они прописаны для каждой библиотеки по отдельности.</p>
55
String appVersion = System.getProperty("app.version");<p>dependencies - здесь определяются зависимости проекта - библиотеки, которые будут использоваться. В нашем указана только зависимость от JUnit версии 3.8.1. В dependencies, так же как и для всего проекта, прописываются идентификаторы groupId, artifactId и version. Только здесь они прописаны для каждой библиотеки по отдельности.</p>
56
<p>scope указывает на то, для чего библиотека используется. Мы прописали область test - JUnit будет доступен только для запуска тестов, но не будет включён в основной код проекта.</p>
56
<p>scope указывает на то, для чего библиотека используется. Мы прописали область test - JUnit будет доступен только для запуска тестов, но не будет включён в основной код проекта.</p>
57
<p>Теперь запустим наш проект. Для этого нажмите run в окне App.java:</p>
57
<p>Теперь запустим наш проект. Для этого нажмите run в окне App.java:</p>
58
<em>Скриншот: Skillbox Media</em><p>Всё сработало как надо - появился текст Hello World!:</p>
58
<em>Скриншот: Skillbox Media</em><p>Всё сработало как надо - появился текст Hello World!:</p>
59
<em>Скриншот: Skillbox Media</em><p>Поздравляем! Вы собрали первый проект в Maven.</p>
59
<em>Скриншот: Skillbox Media</em><p>Поздравляем! Вы собрали первый проект в Maven.</p>
60
<p>Maven умеет не только выводить что-то в консоль. Его мощь - в библиотеках, которые можно подключить к проекту. Для этого используются репозитории.</p>
60
<p>Maven умеет не только выводить что-то в консоль. Его мощь - в библиотеках, которые можно подключить к проекту. Для этого используются репозитории.</p>
61
<p>Репозитории Maven - это хранилища, где находятся библиотеки. Что-то вроде Google Play или App Store, но для сборщика проектов. Репозитории бывают локальными и удалёнными. Последние делятся на общедоступные и сторонние.</p>
61
<p>Репозитории Maven - это хранилища, где находятся библиотеки. Что-то вроде Google Play или App Store, но для сборщика проектов. Репозитории бывают локальными и удалёнными. Последние делятся на общедоступные и сторонние.</p>
62
<p><strong>Локальный репозиторий</strong>расположен на вашем компьютере. Там Maven хранит библиотеки, которые вы используете в своих проектах.</p>
62
<p><strong>Локальный репозиторий</strong>расположен на вашем компьютере. Там Maven хранит библиотеки, которые вы используете в своих проектах.</p>
63
<p>Когда вы загружаете библиотеку в первый раз, Maven сохраняет её в локальном репозитории. Все последующие проекты используют уже загруженную версию, что позволяет сэкономить время на её скачивании.</p>
63
<p>Когда вы загружаете библиотеку в первый раз, Maven сохраняет её в локальном репозитории. Все последующие проекты используют уже загруженную версию, что позволяет сэкономить время на её скачивании.</p>
64
<p><strong>Общедоступный</strong>, или<strong>центральный</strong>,<strong>репозиторий</strong> - это хранилище библиотек, предоставляемых Apache Maven. Именно к нему обращается сборщик по умолчанию.</p>
64
<p><strong>Общедоступный</strong>, или<strong>центральный</strong>,<strong>репозиторий</strong> - это хранилище библиотек, предоставляемых Apache Maven. Именно к нему обращается сборщик по умолчанию.</p>
65
<p><strong>Сторонние репозитории</strong>предоставляют какие-либо организации или сообщества. Чтобы Maven искал библиотеки именно в них, необходимо это настроить.</p>
65
<p><strong>Сторонние репозитории</strong>предоставляют какие-либо организации или сообщества. Чтобы Maven искал библиотеки именно в них, необходимо это настроить.</p>
66
<p>Библиотеки могут быть в состоянии снапшота (SNAPSHOT) или релиза (release). Снапшоты - это версии библиотек в разработке. Они могут меняться внутри без изменения номера версии. Это может привести к проблемам, так как версия библиотеки остаётся прежней, но её функциональность может измениться. Релизы - стабильные версии библиотек, которые не изменяются, а выпускаются под конкретным номером. Лучше всего использовать именно их.</p>
66
<p>Библиотеки могут быть в состоянии снапшота (SNAPSHOT) или релиза (release). Снапшоты - это версии библиотек в разработке. Они могут меняться внутри без изменения номера версии. Это может привести к проблемам, так как версия библиотеки остаётся прежней, но её функциональность может измениться. Релизы - стабильные версии библиотек, которые не изменяются, а выпускаются под конкретным номером. Лучше всего использовать именно их.</p>
67
<p>Настройки работы Maven с репозиториями прописаны в settings.xml. Сам файл находится в папке conf вашей директории с Maven:</p>
67
<p>Настройки работы Maven с репозиториями прописаны в settings.xml. Сам файл находится в папке conf вашей директории с Maven:</p>
68
<em>Скриншот: Skillbox Media</em><p>Откройте settings.xml в любом текстовом редакторе. Там много кода, но нам нужна секция <mirrors>. По умолчанию она выглядит так:</p>
68
<em>Скриншот: Skillbox Media</em><p>Откройте settings.xml в любом текстовом редакторе. Там много кода, но нам нужна секция <mirrors>. По умолчанию она выглядит так:</p>
69
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> <mirror> <id>maven-default-http-blocker</id> <mirrorOf>external:http:*</mirrorOf> <name>Pseudo repository to mirror external repositories initially using HTTP.</name> <url>http://0.0.0.0/</url> <blocked>true</blocked> </mirror> </mirrors><p>Что тут есть:</p>
69
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> <mirror> <id>maven-default-http-blocker</id> <mirrorOf>external:http:*</mirrorOf> <name>Pseudo repository to mirror external repositories initially using HTTP.</name> <url>http://0.0.0.0/</url> <blocked>true</blocked> </mirror> </mirrors><p>Что тут есть:</p>
70
<p>id - уникальный идентификатор для данного зеркала. В этом случае ID установлен как maven-default-http-blocker. Такая конфигурация блокирует внешние репозитории, использующие протокол HTTP. Это полезно, когда мы хотим пользоваться только локальными репозиториями.</p>
70
<p>id - уникальный идентификатор для данного зеркала. В этом случае ID установлен как maven-default-http-blocker. Такая конфигурация блокирует внешние репозитории, использующие протокол HTTP. Это полезно, когда мы хотим пользоваться только локальными репозиториями.</p>
71
<p>mirrorOf - этот элемент указывает, для каких репозиториев будет применяться зеркало. У нас прописан шаблон external:http:*, который означает, что сборщик будет блокировать все внешние репозитории, использующие протокол HTTP, без каких-либо ограничений.</p>
71
<p>mirrorOf - этот элемент указывает, для каких репозиториев будет применяться зеркало. У нас прописан шаблон external:http:*, который означает, что сборщик будет блокировать все внешние репозитории, использующие протокол HTTP, без каких-либо ограничений.</p>
72
<p>name - имя и описание для зеркала.</p>
72
<p>name - имя и описание для зеркала.</p>
73
<p>url - URL зеркала. Здесь указан фиктивный URL http://0.0.0.0/ в качестве заглушки.</p>
73
<p>url - URL зеркала. Здесь указан фиктивный URL http://0.0.0.0/ в качестве заглушки.</p>
74
<p>blocked - определяет, блокируется указанное зеркало или нет. У нас установлено значение true, то есть доступ к внешним репозиториям заблокирован.</p>
74
<p>blocked - определяет, блокируется указанное зеркало или нет. У нас установлено значение true, то есть доступ к внешним репозиториям заблокирован.</p>
75
<p>Если мы хотим, чтобы Maven искал библиотеки в других репозиториях, то должны добавить в <mirrors> блок по шаблону:</p>
75
<p>Если мы хотим, чтобы Maven искал библиотеки в других репозиториях, то должны добавить в <mirrors> блок по шаблону:</p>
76
<mirror> <id>external-repos</id> <url>https://repo.example.com/maven2</url> <mirrorOf>external:*</mirrorOf> </mirror><p>В url впишите адрес желаемого репозитория. Теперь Maven сможет его найти.</p>
76
<mirror> <id>external-repos</id> <url>https://repo.example.com/maven2</url> <mirrorOf>external:*</mirrorOf> </mirror><p>В url впишите адрес желаемого репозитория. Теперь Maven сможет его найти.</p>
77
<p>Резюмируем всё, что мы узнали про сборщик проектов:</p>
77
<p>Резюмируем всё, что мы узнали про сборщик проектов:</p>
78
<ul><li>Maven облегчает рутинные задачи по сборке проектов на Java и некоторых других языках программирования.</li>
78
<ul><li>Maven облегчает рутинные задачи по сборке проектов на Java и некоторых других языках программирования.</li>
79
<li>Главная сила Maven - это pom-файлы, позволяющие точно настроить сборку проекта с учётом всех используемых библиотек и фреймворков.</li>
79
<li>Главная сила Maven - это pom-файлы, позволяющие точно настроить сборку проекта с учётом всех используемых библиотек и фреймворков.</li>
80
<li>Для хранения библиотек используются репозитории. Они могут быть локальными, то есть располагаться на вашем компьютере, и удалёнными. Это позволяет гибко настроить доступ к библиотекам и использовать нужные нам версии.</li>
80
<li>Для хранения библиотек используются репозитории. Они могут быть локальными, то есть располагаться на вашем компьютере, и удалёнными. Это позволяет гибко настроить доступ к библиотекам и использовать нужные нам версии.</li>
81
</ul><a>Курс с трудоустройством: "Профессия Java-разработчик + ИИ" Узнать о курсе</a>
81
</ul><a>Курс с трудоустройством: "Профессия Java-разработчик + ИИ" Узнать о курсе</a>