如何覆盖 Eclipse 中的默认 JVM 参数?

How to override the default JVM arguments in Eclipse?

在 Eclipse 中,我已将 -ea(启用断言)设置为我的 JRE 的 default VM argument。这使得使用断言变得更加有用,我不想错过它。

然而,有一些罕见的情况我不想 -ea。有没有办法覆盖(删除)默认的 VM 参数,比方说,特定的 运行 配置?

具体来说,我想 运行 JMH 使用 Maven exec:java 运行 配置,但是适用于任何类型 运行 配置的解决方案也不错

您可以在 Eclipse 中创建新的 JRE,无需 -ea 参数(但安装路径相同)。

然后对于启动配置,您可以指定要使用的 JRE。

Maven 配置文件怎么样?

下面的示例对不同的配置文件使用不同的 JDK:

<build>
    <plugins>
        <!-- we want JDK 1.6 source and binary compatiblility -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.6</source>
                <target>1.6</target>
            </configuration>
        </plugin>
        <!-- ... -->
        <!-- we want sources to be processed by a specific 1.6 javac -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
              <verbose>true</verbose>
              <fork>true</fork>
              <executable>${JAVA_1_6_HOME}/bin/javac</executable>
              <compilerVersion>1.3</compilerVersion>
            </configuration>
        </plugin>
    </plugins>
</build>

如果您的开发人员只是在他们的 settings.xml 中添加(并自定义)以下行,您的 pom 将独立于平台:

<settings>
  [...]
  <profiles>
    [...]
    <profile>
      <id>compiler</id>
        <properties>
          <JAVA_1_4_HOME>C:\Program Files\Java\j2sdk1.4.2_09</JAVA_1_4_HOME>
          <JAVA_1_6_HOME>C:\Program Files\Java\j2sdk1.6.0_18</JAVA_1_6_HOME>
        </properties>
    </profile>
  </profiles>
  [...]
  <activeProfiles>
    <activeProfile>compiler</activeProfile>
  </activeProfiles>
</settings>

下面引用 Maven 传递给编译器插件 JVM args...但我从未尝试过:

https://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-with-memory-enhancements.html