Как указать JDK в плагине Maven Jetty

Как указать JDK в плагине Maven Jetty? Как это:

<plugin>
    <groupId>org.eclipse.jetty</groupId>
    <artifactId>jetty-maven-plugin</artifactId>
    <version>${jetty-maven-plugin.version}</version>
    <configuration>
        <scanIntervalSeconds>2</scanIntervalSeconds>
        <webApp>
            <contextPath>/${project.build.finalName}</contextPath>
            <jettyEnvXml>${project.basedir}/src/over/here/jetty-env.xml</jettyEnvXml>
        </webApp>
        <httpConnector>
            <port>8080</port>
        </httpConnector>
        <!--<executable>${env.JAVA_IBM_HOME}/bin/javac</executable>-->
    </configuration>
</plugin>

Пожалуйста, обратите внимание: excutable тег неверен, я просто использую его в качестве примера.

2 ответа

Чтобы уточнить: вы на самом деле хотите указать исполняемый файл, поэтому, вероятно, JRE (среда выполнения Java), а не JDK (Java Development Kit). Хотя это правда, что JDK также выполняет функции JRE, на мой взгляд, это является обязательным пояснением.

Что касается вашего вопроса, то нет такой мысли, чтобы указать другой JDK/JRE, используемый для выполнения определенного плагина Maven: плагины выполняются как часть mvn команда, которая, в свою очередь, выполняется с помощью системной JDK/JRE по умолчанию (задается в пути), и на самом деле это скрипт, который вызывает простую основную часть Java, да, Maven написан на Java, и его выполнение начинается с основной Java, следующий, чтобы быть ясным:

org.codehaus.plexus.classworlds.launcher.Launcher#main

Если вы хотите изменить JRE, используемую для запуска этого основного, вам нужно изменить JAVA_HOME переменная заранее, как также объясняется в этом старом посте SO.

Так что вам понадобится следующее:

set JAVA_HOME=path_to_your_different_jdk
mvn jetty:run

В вашей среде IDE и в соответствии со снимком экрана, который вы разместили в своем ответе, вы фактически делаете то же самое: задаете, какую JVM необходимо использовать.

Это верно для большинства плагинов, если не предусмотрен специальный механизм разветвления. Например:

  • Плагин Maven Surefire предоставляет механизм вилки через reuseForks вариант и jvm вариант, который также объясняет, что:

    Возможность указать jvm (или путь к исполняемому файлу Java) для использования с параметрами разветвления. По умолчанию jvm будет новым экземпляром той же виртуальной машины, что и для запуска Maven.

    Указанная JVM (JRE или JDK, используемая в качестве JRE) будет затем использоваться для выполнения тестов (в основном тот же сценарий, который вы искали в отношении плагина Jetty Maven).

  • Плагин Maven Compiler также предоставляет fork вариант, который может затем использовать executable вариант, где вы можете эффективно указать на другой JDK (а не JRE в данном случае) для компиляции вашего кода.

    Устанавливает исполняемый файл компилятора для использования при fork является true,

Плагин Jetty Maven выполняется как часть команды Maven (опять же, основной Java, используя JRE, указанный в переменной JAVA_HOME или по умолчанию вашей системы), как также указано в его официальной документации:

Путь к классу запущенной Jetty и развернутого веб-приложения управляется Maven
...
Например, вам может потребоваться запустить ваше веб-приложение в разветвленном экземпляре Jetty, а не в процессе, выполняющем Maven;

И действительно run-forked цель достигнута

Эта цель позволяет вам запустить веб-приложение в новой JVM, опционально передавая аргументы этой новой JVM. Эта цель поддерживает те же параметры конфигурации, что и пристань: запустите цель с помощью пары дополнительных функций, которые помогут настроить разветвленный процесс.

Эта опция, однако, в основном используется для передачи различных аргументов в Jetty, а не в другой исполняемый файл (например, если вы уже установили один и тот же аргумент для Maven и хотите, чтобы он был с другим значением для запуска Jetty). Итак, опять же, опция не существует (чтобы указать, какой исполняемый файл /jvm использовать для этого разветвленного исполнения). Жаль, потому что они почти достигли этой цели.

Я думаю, что получил ответ самостоятельно, но я все еще не знаю, как сделать это в файле maven xml, если вы знаете, пожалуйста, скажите мне.

введите описание изображения здесь

Другие вопросы по тегам