HTML Diff
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="&lt;path_to_maven&gt;:$PATH"<p>Вместо path_to_maven указываем путь к файлу ~/.bashrc или ~/.bash_profile в Linux или .zshrc в macOS.</p>
29 export PATH="&lt;path_to_maven&gt;:$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 &lt;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"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;org.example&lt;/groupId&gt; &lt;artifactId&gt;maven-example&lt;/artifactId&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;jar&lt;/packaging&gt; &lt;name&gt;maven-example&lt;/name&gt; &lt;url&gt;http://maven.apache.org&lt;/url&gt; &lt;properties&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt; &lt;artifactId&gt;junit&lt;/artifactId&gt; &lt;version&gt;3.8.1&lt;/version&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/project&gt;<p>Разберём, что к чему:</p>
42 &lt;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"&gt; &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt; &lt;groupId&gt;org.example&lt;/groupId&gt; &lt;artifactId&gt;maven-example&lt;/artifactId&gt; &lt;version&gt;1.0-SNAPSHOT&lt;/version&gt; &lt;packaging&gt;jar&lt;/packaging&gt; &lt;name&gt;maven-example&lt;/name&gt; &lt;url&gt;http://maven.apache.org&lt;/url&gt; &lt;properties&gt; &lt;project.build.sourceEncoding&gt;UTF-8&lt;/project.build.sourceEncoding&gt; &lt;/properties&gt; &lt;dependencies&gt; &lt;dependency&gt; &lt;groupId&gt;junit&lt;/groupId&gt; &lt;artifactId&gt;junit&lt;/artifactId&gt; &lt;version&gt;3.8.1&lt;/version&gt; &lt;scope&gt;test&lt;/scope&gt; &lt;/dependency&gt; &lt;/dependencies&gt; &lt;/project&gt;<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 в любом текстовом редакторе. Там много кода, но нам нужна секция &lt;mirrors&gt;. По умолчанию она выглядит так:</p>
68 <em>Скриншот: Skillbox Media</em><p>Откройте settings.xml в любом текстовом редакторе. Там много кода, но нам нужна секция &lt;mirrors&gt;. По умолчанию она выглядит так:</p>
69 &lt;mirrors&gt; &lt;!-- 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. | &lt;mirror&gt; &lt;id&gt;mirrorId&lt;/id&gt; &lt;mirrorOf&gt;repositoryId&lt;/mirrorOf&gt; &lt;name&gt;Human Readable Name for this Mirror.&lt;/name&gt; &lt;url&gt;http://my.repository.com/repo/path&lt;/url&gt; &lt;/mirror&gt; --&gt; &lt;mirror&gt; &lt;id&gt;maven-default-http-blocker&lt;/id&gt; &lt;mirrorOf&gt;external:http:*&lt;/mirrorOf&gt; &lt;name&gt;Pseudo repository to mirror external repositories initially using HTTP.&lt;/name&gt; &lt;url&gt;http://0.0.0.0/&lt;/url&gt; &lt;blocked&gt;true&lt;/blocked&gt; &lt;/mirror&gt; &lt;/mirrors&gt;<p>Что тут есть:</p>
69 &lt;mirrors&gt; &lt;!-- 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. | &lt;mirror&gt; &lt;id&gt;mirrorId&lt;/id&gt; &lt;mirrorOf&gt;repositoryId&lt;/mirrorOf&gt; &lt;name&gt;Human Readable Name for this Mirror.&lt;/name&gt; &lt;url&gt;http://my.repository.com/repo/path&lt;/url&gt; &lt;/mirror&gt; --&gt; &lt;mirror&gt; &lt;id&gt;maven-default-http-blocker&lt;/id&gt; &lt;mirrorOf&gt;external:http:*&lt;/mirrorOf&gt; &lt;name&gt;Pseudo repository to mirror external repositories initially using HTTP.&lt;/name&gt; &lt;url&gt;http://0.0.0.0/&lt;/url&gt; &lt;blocked&gt;true&lt;/blocked&gt; &lt;/mirror&gt; &lt;/mirrors&gt;<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 искал библиотеки в других репозиториях, то должны добавить в &lt;mirrors&gt; блок по шаблону:</p>
75 <p>Если мы хотим, чтобы Maven искал библиотеки в других репозиториях, то должны добавить в &lt;mirrors&gt; блок по шаблону:</p>
76 &lt;mirror&gt; &lt;id&gt;external-repos&lt;/id&gt; &lt;url&gt;https://repo.example.com/maven2&lt;/url&gt; &lt;mirrorOf&gt;external:*&lt;/mirrorOf&gt; &lt;/mirror&gt;<p>В url впишите адрес желаемого репозитория. Теперь Maven сможет его найти.</p>
76 &lt;mirror&gt; &lt;id&gt;external-repos&lt;/id&gt; &lt;url&gt;https://repo.example.com/maven2&lt;/url&gt; &lt;mirrorOf&gt;external:*&lt;/mirrorOf&gt; &lt;/mirror&gt;<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>