User Дмитрий Яковенко
Дмитрий Яковенко
35 уровень
Москва

Подключение библиотек с помощью Maven

Статья из группы Random
Подключение библиотек с помощью Maven - 1 Проблема JavaRush использует некоторые пакеты, которые были в JDK8, а потом их вырезали. Например, JavaFX для игр, или JAXB для обработки XML. Поэтому если вы используете свежую версию JDK, то у вас проблема... Но даже если вы сидите на олдскульной JDK8, то у вас тоже проблема... В 4 квесте Collections вам потребуется подключить Jackson, для обработки JSON. Конечно, всё можно подключить руками, но это довольно уныло. Надо выкачивать их руками, добавлять их в проект... Решение Собственно для автоматизации этой рутины и нужен Maven. 0) Настоятельно рекомендую сделать резервную копию проекта JavaRush, а то мало ли... 1) Сначала добавим к нашему проекту Maven. Правой кнопкой на модуле 4.JavaCollections, там выбираем Add Framework Support... Maven, [Ok] 2) Теперь находим файлик pom.xml, в нём руками добавляем блок

    <dependencies>
    </dependencies>
Прям сразу после </version> 3) А дальше начинаем добавлять нужные нам пакеты. Если нам нужен Jeckson, гуглим "jackson maven dependency" Находим ответ типо такого: http://tutorials.jenkov.com/java-json/jackson-installation.html Видим, что нам для Jeckson нужно 3 зависимости (artifactId): jackson-core, jackson-annotations, jackson-databind Есть и другие зависимости, но они нам пока не нужны, будут нужны - добавим. Теперь эти 3 зависимости ищем на этом сайте - https://mvnrepository.com/ Вбиваем туда названия наших артефактов, находим те, которыми пользуются большинство, или самую свежую версию. И копируем текст зависимости к нам в pom.xml. 4) Итого наш 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>groupId</groupId>
    <artifactId>4.JavaCollections</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.12.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.12.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.12.3</version>
        </dependency>
    </dependencies>


</project>

Чудно, жмём правой кнопкой по нему, и выбираем Maven/Reimport. 5) Теперь в наших программах Jeckson стал находиться, красные названия объектов пропали. Но код перестал компилироваться, пишет ошибку:

Error:java: error: release version 5 not supported
Почему-то при внедрении Maven в проект, версия поддерживаемой Java падает до 5... Нам это надо починить: File\Settings\Build, Execution, Deployment\Compiler\Java Compiler Там в модуля указывается, что для наш модуль 4.JavaCollections - нужно кодить в Java5... Удаляем наш модуль в этом окне. Но это не всё, дальше открываем File\Project Structure\Modules Там выбираем наш модуль 4.JavaCollections. Дальше выбираем вкладку Language level - Project default. 5.1) Нашёл как решить проблему из пункта 5. Просто дописываем в pom.xml следующее:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
Теперь Maven проставляет версию байткода для нашего модуля равную JDK 8 и нас это устраивает. 5й пункт не стал удалять, для общей информации оставил. Чтобы было понимание, где какие версии JDK можно поменять в IDEA 6) Кстати о Project default. JavaRush работает на JDK 8. И если у вас 11 версия (или свежее), то вы будете регулярно материться на Валидатор, который не пропускает ваш код. Потому что вы будете писать код, который ввели в JDK 9+, у вас всё будет работать, а Валидатор будет вам засчитывать ошибку. Поэтому идём: File\Project Structure\Project Указываем вашу текущую версию JDK, а под ней, указываем language level - строго 8 - Lambdas, type annotations etc. В чём выгода - вы будете видеть возможности JDK 9+, но если вы их попробуете добавить - IDEA будет ругаться. Например, "aaa".lines(); - написать можно (IDEA подставит, хоть и подсветит красным), провалиться можно - поизучать внутренности. А вот скомпилировать - не даст. 7) Последнее что нам осталось сделать - это поправить пути внутри пакета 4.JavaCollections. Maven их переделал под себя, возвращаем как было: а) Заходим в File\Project Structure\Modules б) Выбираем 4.JavaCollections\Source в) Удаляем target, rosources, test г) Ставим Source Folder на src д) Папку com переносим на диске обратно в src е) Папку main - удаляем. Вобщем делаем как было до Maven, по аналогии с 3.JavaMultithreading 8) Теперь самостоятельно добавляем оставшиеся зависимости, например для JAXB. Если нужно добавить логгирование, может помочь моя статья. Дописываем в резюме - Maven. Вы восхитительны! Если помогло - лайк, подписка, колокольчик!)))
Комментарии (7)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Андрей Гузанов Уровень 30, Новосибирск, Россия
1 октября 2021
Спасибо, полезная статья ! )
AlinaAlina Уровень 35, Санкт-Петербург
26 августа 2021
Cпасибо, статья очень помогла)
Vetrov_Milka Уровень 28, Москва, Молдова
22 августа 2021
Помогите пожалуйста, где находится кнопка из этого пункта? "Чудно, жмём правой кнопкой по нему, и выбираем Maven/Reimport."?
Vadim Zakirov Уровень 27, Москва, Россия
6 июля 2021
где этот File\Project Structure\Project искать, хрен его знает
Алексей Уровень 37, Москва, Россия
3 июня 2021
хорошая статья