摆脱 Eclipse Junit 4 运行时配置无关的 VM 参数

问题描述 投票:0回答:1

我现在在运行 junit 测试时正在与 Eclipse 版本 2024.9 作斗争。 当我去运行我们的 Junit 4(是的,旧的)测试时,它抱怨非常不透明的错误消息:

Reference to undefined variable argLine

经过一段时间的研究,我发现在相关 Junit 测试的运行配置下,VM 参数窗口中不仅有

-ea
,还有一大堆附加参数,包括
${argLine}
。 好的,很好。 但我不知道这是从哪里来的。 当我删除该配置并重新运行时,额外的参数又回来了。

完整的参数列表如下。 您可以看到其中有一些明显的调试标志,如果进行一些分析或删除调试,我可能会设置这些标志。 但话又说回来,他们从哪里来?

-ea
${argLine} -javaagent:${com.github.jbellis:jamm:jar}
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n
-Djava.net.preferIPv4Stack=true -Xms512m -Xmx1g -DMHUB_DEV=true 

我做了一些搜索,发现人们在谈论已安装的 JRE -> 编辑 -> 默认 VM 参数,但我的 JRE 都没有任何参数。

如果我在工作区配置中对“argLine”和“agentlib”进行

grep -r
,以查看它是否在某种插件配置或其他内容中。 我看到它出现在测试运行配置中,但没有出现在其他地方。 我在环境中和我能找到的任何 maven pom 插件配置中都没有看到它。 我尝试过重新启动 Eclipse。

还有其他想法吗? 预先感谢。

java eclipse junit junit4 run-configuration
1个回答
0
投票

Eclipse 2024-09 包括 m2e 2.6.2,其中添加了一项新功能,其中来自 Maven Surefire 插件的参数将被传播到运行配置

因此,如果您的 pom.xml 包含用于在surefire或failsafe插件中进行测试的CLI参数(类似于以下内容),这些参数将被复制:

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <argLine>
                        your arguments here
                    </argLine>
                </configuration>
            </plugin>

如果这些参数在父 POM 中定义(引用 pom.xml 中另一个工件的

<parent>
元素),这些参数也会被传播。要检查这一点,您可以在 Eclipse 中打开
pom.xml
并打开
Effective POM
选项卡: effective POM tab in the Eclipse POM viewer

这应该向您显示完整有效的 pom.xml,其中还包括来自父 POM 的内容。

如果您从 pom.xml 中删除启动时出错的参数,并通过右键单击项目并选择 Maven > 更新项目 来更新 Maven 项目,它应该会停止尝试使用这些参数。

如果这是 Eclipse 无法插入某些属性的错误,请在 m2e 中创建一个问题,包括最小的

pom.xml
重现它。

© www.soinside.com 2019 - 2024. All rights reserved.