JavaRush /Java блог /Random UA /Підключення бібліотек за допомогою Maven
Дмитрий Яковенко
35 рівень
Москва

Підключення бібліотек за допомогою Maven

Стаття з групи Random UA
Підключення бібліотек за допомогою 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... Нам це треба полагодити: потрібно кодувати 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 їх переробив під себе, повертаємо як було: а) Заходимо в FileProject StructureModules б) Вибираємо 4.JavaCollectionsSource в) Видаляємо target, rosources, test г) Ставимо Source Folder на src д) Папку com переносимо на диску назад у src е) Папку main – видаляємо. Втім робимо як було до Maven, за аналогією з 3.JavaMultithreading 8) Тепер самостійно додаємо залежності, що залишабося, наприклад для JAXB. Якщо потрібно додати логування, може допомогти Maven їх переробив під себе, повертаємо як було: а) Заходимо в FileProject StructureModules б) Вибираємо 4.JavaCollectionsSource в) Видаляємо target, rosources, test г) Ставимо Source Folder на src д) Папку com переносимо на диску назад у src е) Папку main – видаляємо. Втім робимо як було до Maven, за аналогією з 3.JavaMultithreading 8) Тепер самостійно додаємо залежності, що залишабося, наприклад для JAXB. Якщо потрібно додати логування, може допомогти Maven їх переробив під себе, повертаємо як було: а) Заходимо в FileProject StructureModules б) Вибираємо 4.JavaCollectionsSource в) Видаляємо target, rosources, test г) Ставимо Source Folder на src д) Папку com переносимо на диску назад у src е) Папку main – видаляємо. Втім робимо як було до Maven, за аналогією з 3.JavaMultithreading 8) Тепер самостійно додаємо залежності, що залишабося, наприклад для JAXB. Якщо потрібно додати логування, може допомогти наприклад, для JAXB. Якщо потрібно додати логування, може допомогти наприклад, для JAXB. Якщо потрібно додати логування, може допомогтимоя стаття . Дописуємо в резюме – Maven. Ви чудові! Якщо допомогло - лайк, передплата, дзвіночок!)))
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ