如何在maven jetty插件中指定JDK

时间:2016-03-22 04:59:48

标签: maven jetty maven-jetty-plugin

如何在maven jetty插件中指定JDK? 像这样:

<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 个答案:

答案 0 :(得分:1)

澄清一下:您实际上想要指定可执行文件,因此可能是JRE(Java运行时环境)而不是JDK(Java Development Kit)。虽然JDK也可以作为JRE使用,但我认为这是一个必要的澄清。

提出你的问题,没有想到指定用于执行某个Maven插件的不同JDK / JRE:插件作为mvn命令的一部分执行,而org.codehaus.plexus.classworlds.launcher.Launcher#main 命令又使用默认情况下系统JDK / JRE(在路径中设置)它实际上是一个调用普通Java主的脚本,是的,Maven用Java编写并且它的执行从Java开始主要,以下一点要明确:

JAVA_HOME

如果您想更改用于启动此主程序的JRE,则需要预先更改set JAVA_HOME=path_to_your_different_jdk mvn jetty:run 变量,此old SO post也说明了这一点。

所以你需要以下内容:

jvm

在您的IDE中,根据您在答案中发布的屏幕截图,您实际上也是这样做的:设置必须使用的JVM。

对于大多数插件都是如此,除非预见到特定的分叉机制。例如:

  • Maven Surefire Plugin通过reuseForks选项和jvm选项提供了fork机制,这也解释了:

      

    指定用于分叉​​选项的fork(或java可执行文件的路径)的选项。对于默认值,jvm将是与用于运行Maven的VM相同的VM的新实例。

    然后将使用指定的JVM(用作JRE的JRE或JDK)来执行测试(基本上与您正在寻找的有关Jetty Maven插件的场景相同。

  • Maven Compiler Plugin还提供fork选项,然后可以使用executable选项,您可以有效地指向不同的JDK(在本例中不是JRE)编译你的代码。

      

    设置在trueUPDATE user_table SET email=$newemail WHERE userID = $userID 时使用的编译器的可执行文件。

Jetty Maven Plugin作为Maven命令的一部分执行(同样,使用由JAVA_HOME变量指定的JRE或系统的默认值的Java main),也在其官方文档中指定:

  

正在运行的Jetty及其部署的webapp的类路径由Maven管理   ...
  例如,您可能需要在Jetty的分叉实例中运行Web应用程序,而不是在运行Maven的进程中运行;

确实提供了run-forked目标

  

此目标允许您在新JVM中启动Web应用程序,可选择将参数传递给新JVM。此目标支持与jetty相同的配置参数:运行目标以及一些附加功能,以帮助配置分叉进程。

然而,此选项主要用于将different arguments传递给Jetty而不是其他可执行文件(例如,如果您已经为Maven设置了相同的参数,并且您希望它与Jetty运行具有不同的值) 。所以,再次,该选项不存在(指定用于此分叉执行的可执行文件/ jvm)。很遗憾,因为他们几乎完成了这个目标。

答案 1 :(得分:0)

我想我自己得到了答案,但我仍然不知道如何在maven xml文件中做到这一点,如果你知道的话,请告诉我。

enter image description here