Отказ от ответственности: это не ответ, а лишь частичный отчет о моем недавнем опыте. Не стесняйтесь пометить этот ответ, если считаете, что он не соответствует стандартам SO.
Поддерживает ли Maven это?
Да, используйте плагин компилятора 3.8. 0 / 3.8.1
Однако эта миграция требует дополнительной заботы.
Недавно мы сделали что-то подобное, мигрировав с ORACLE JDK 8 на OPENJDK 11. Так как у нас есть хаудреды репозиториев с разными миссии, мы столкнулись со всеми видами проблем. Просто чтобы привести некоторые из них, которые я получил здесь в своем почтовом ящике, помеченном как [jdk11_migration]:
Это совершенно очевидно, но я хотел бы подчеркнуть это для перехода с java 8–11, мы также должны соответствовать требованиям java 9 и 10
Некоторые плагины Maven, такие как cobertura, не поддерживают Java 11, и я думаю, что они никогда не будут поддержать это. В некоторых случаях эти плагины достигли заброшенной стадии жизненного цикла. Решение было искать альтернативы в зависимости от конкретного случая. Например, мы заменили cobertura на Jacoco.
rt.jar и tools.jar были удалены! Все, на что вы ссылались из-за откровенности, вероятно, сломается.
некоторые классы, которые мы не должны использовать в java 9 или меньше, сейчас в java 11 больше не существуют. Я говорю о доступе к классам в таких пакетах, как sun. *, Sun.mis c et c. Решение состоит в том, чтобы искать замену кода «один к одному» или рефакторинг кода, чтобы избежать его использования.
Отражение обычно является последним используемым маркером и, в этих случаях, в java 9 и выше мы получаем предупреждающие сообщения, такие как:
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by ...
WARNING: Please consider reporting this to the maintainers of ...
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Хотя это не совсем решение, есть флаг, чтобы избавиться от этого предупреждения --illegal-access = разрешать . Это особенно важно при использовании подключаемого модуля surefire maven.
- Java 9 представил модульную систему, тогда «сейчас» мы имеем явление cla sh упаковок. Например, сообщения типа «Пакет org.w3 c .dom доступен из более чем одного модуля:, java. xml». Решение состоит в том, чтобы найти источник избыточного включения (особенно дублированные зависимости maven или зависимости) и удалить его.
Хотя это не было проблемой для нас, я только что отметил, что ваш репозиторий состоит в REST компонентов в большинстве. Возможно, вы столкнетесь с проблемами ClassNotFound в отношении некоторых пакетов, таких как javax. xml .bind, которые в основном были исключены из java стандартной версии. Вы можете исправить это, включив их явно в ваш pom. xml.
К счастью, вы можете найти хорошие вопросы и ответы для каждой проблемы, которые вы найдете в вашей миграции здесь, в SO или через inte rnet. В дикой природе есть несколько руководств по миграции, которые являются хорошей отправной точкой. Специфические проблемы c, такие как запутывание и интеграция с IDE, могут занять немного времени, но, по моему опыту, эта миграция прошла безболезненно, чем я предполагал.