Maven指向Java 6,我想使用run-forked目标从jetty-maven-plugin调用Java 7 JVM时从Java 7 JVM运行Jetty。我看到了设置jvmArgs的选项,但我没有看到任何允许我选择不同JVM的内容。
我想我可以使用maven-exec并下载到shell脚本(调用我喜欢的任何java二进制文件),但如果可能的话,我宁愿住在maven-land。
仅供参考,我使用的是Maven 3和Jetty 9。
答案 0 :(得分:1)
是的,这是可能的。
JettyRunForkedMojo使用标准JDK ProcessBuilder.start()
来启动分叉JVM。
如source所示,Mojo使用getJavaBin() method来查找java可执行文件的路径。 系统变量的价值" java.home"对此进行了分析。
所以,使用jetty-maven-plugin的配置:
...
<execution>
<id>start-jetty</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run-forked</goal>
</goals>
<configuration>
...
<systemProperties>
<force>true</force> <!-- !!! important -->
<systemProperty>
<name>java.home</name>
<value>/usr/lib/jvm/j2sdk1.6-oracle/</value>
</systemProperty>
</systemProperties>
</configuration>
</execution>
可以启动指定版本的分叉JVM。
在我的示例中,我有默认的java home set 1.7,但是强制forked JVM使用1.6 JDK(也已安装)。
答案 1 :(得分:0)
Maven通常不支持其任何插件中的备用JVM行为。
您可以选择在Java 7中运行,并且所有编译/测试都使用Java 6的-source
和-target
完成,将jetty-maven-plugin保留在与JVM相同的JVM级别你执行了构建为。
Jetty自己的构建就是这样。
我们使用Java 7的-source
和-target
构建Java 8。
您可能还需要查看enforcer插件并为构建设置最低JVM级别的实施。