Переменные системной среды Windows 10 JAVA_HOME и PATH указывают на JDK 18, который необходим для запуска VS Code и других приложений на ноутбуке.
Я настроил проект Maven в VS Code с JRE/Java Runtime, указывающим на JDK 1.8, который необходим для правильной компиляции и сборки проекта. Все работает нормально.
Когда я запускаю цели Maven, такие как mvn clean install, либо используя ctrl-shift-p и execute maven command, либо запуская сборку из записи Maven View/Lifecycle. Запускается терминал, и он наследует системные переменные окружения. Чтобы избежать этой проблемы, я всегда отменяю запущенную команду maven в терминале PowerShell, нажимая ctrl-c, и меняю переменные среды, используя:
$ENV:Path = "C:\apps\jdk1.8.0_351\bin;"+$ENV:Path
$env:JAVA_HOME = "C:\apps\jdk1.8.0_351"
... затем снова запустите цель maven.
Я также добавил избранное в Maven View/Favorites, чтобы запустить цель maven следующим образом:
"maven.terminal.favorites": [
{
"command": "clean install \"-Dmaven.test.skip=true\"",
"debug": false
}
]
Когда я запускаю вышеуказанную цель, она всегда будет наследовать системные значения, и мне придется снова их изменить, как упоминалось ранее.
Кроме того, если я попытаюсь запустить цель из Mave View/Plugins/Install, щелкнув правой кнопкой мыши и выбрав отладку, он всегда будет запускать новый терминал PowerShell, который наследует системные переменные среды, и я не нашел способ изменить это.
Я думаю, что VS Code должен правильно настроить среду при запуске Maven Goals на основе JRE, настроенной в файле VS Code Workspace setting.json, но этого не происходит.
Когда я настроил запрос отладки в launch.json, он соблюдает JDK, определенный для проекта, так почему же он не соблюдает этот параметр при выполнении целей maven?
Я думаю, что могу решить эту проблему, настроив задачу, которая будет запускать цель maven в сценарии PowerShell, я думаю, что это немного сложно для такого простого требования.
Как я могу решить эту проблему без настройки новой задачи? Я думаю, что где-то есть конфигурация для установки JRE для целей Maven для данного проекта.
Спасибо... Я проверю. Этот файл settings.xml также соблюдается Eclipse? Будет ли создан этот файл, если я запущу mvn eclipse:eclipse? Если я установлю JRE в Eclipse, будет ли это эффективно в VS Code? Я заметил, что если я настрою путь сборки и добавлю правильную версию JRE, то цели maven будут правильно работать в Eclipse.
Все, что соответствует тому, как работает maven, должно уважаться (если, конечно, настройки явно не переопределены). В остальном: просто попробуйте. Я сам не являюсь пользователем eclipse.
Решение было, но сейчас я его не вижу. Я думаю, что этот ответ был удален, потому что он не был из надежного источника или что-то в этом роде.
Спасибо, похоже, это то, что я ищу. Я выполнил шаги по активации цепочки инструментов и вижу эффект, отображаемый в выводе mvn clean install, но когда я разархивирую полученный JAR и проверяю файл MANIFEST.MF, я всегда вижу JDK, определенный системой PATH и JAVA_HOME.
Я думаю, что это не сработает для создания файла JAR и должно правильно установить PATH и JAVA_HOME перед запуском цели maven для создания файла JAR с использованием предполагаемой версии JDK. Согласно документации здесь, maven.apache.org/guides/mini/guide-using-toolchains.htmlmaven-jar-plugin не включен. Я проверил версию JDK в сгенерированных .class файлах с помощью команды javap и обнаружил, что на версию java влияет соответствующая установка maven-compiler-plugin.
Конечно, подойдет... Тем временем я хотел знать, будет ли генерация файла JAR с более новой версией JDK работать нормально, если он развернут в JRE с более старой версией, имея в виду, что классы компилируются с использованием правильного JDK. Это нормально?




Существуют различные способы установки целевой версии jdk, необходимой для создания файла jar, но все такие методы будут влиять только на файлы классов. Вы можете установить целевой jdk, используя инструментальную цепочку, плагин компилятора и несколько других методов. Но чтобы создать банку с использованием определенного jdk, вы должны установить переменную среды PATH перед запуском цели maven для создания файла JAR с использованием предполагаемой версии JDK. Например, согласно документации здесь, maven.apache.org/guides/mini/guide-using-toolchains.html, плагин maven-jar не включен. Я проверил версию JDK в сгенерированных файлах .class с помощью команды javap и обнаружил, что на версию java влияет соответствующая установка maven-compiler-plugin, но jar был сгенерирован с использованием javac.exe, который был виден в соответствии с окружением PATH. переменная.
Я предлагаю использовать специфичный для проекта
settings.xml(см. этот вопрос ), и в этомsettings.xmlопределить свойство с именемmaven.compiler.executable, указывающее на дом необходимого JDK (см. этот вопрос).