Java Maven:在生命周期阶段之间传递系统属性

Java Maven:在生命周期阶段之间传递系统属性,java,maven,properties,maven-plugin,lifecycle,Java,Maven,Properties,Maven Plugin,Lifecycle,我还不太熟悉Maven,所以我正在努力完成这项工作: 我正在使用execmaven插件,通过system.setProperty()方法,在processtestclasses阶段设置一些系统属性。而且它们都设置正确。但是当下一个阶段(测试阶段)开始时,我再次列出它们(使用properties.list(System.out)),它们都不见了 所以我的问题是:在进入另一个生命周期阶段时,有没有办法不丢失它们 提前感谢您的帮助。将该值作为变量放入pom中,并在所有需要它的地方引用该变量execma

我还不太熟悉Maven,所以我正在努力完成这项工作:

我正在使用execmaven插件,通过
system.setProperty()
方法,在
processtestclasses
阶段设置一些系统属性。而且它们都设置正确。但是当下一个阶段(测试阶段)开始时,我再次列出它们(使用
properties.list(System.out)
),它们都不见了

所以我的问题是:在进入另一个生命周期阶段时,有没有办法不丢失它们


提前感谢您的帮助。

将该值作为变量放入pom中,并在所有需要它的地方引用该变量
execmaven插件
在自己的上下文中启动和完成。下一个目标不会有相同的背景

您可以使用设置属性。该插件可以从属性文件中读取属性,并设置环境属性以供您在其他地方使用


有关配置插件的信息,请参阅。

如果您正在使用maven surefire插件进行测试(这是您默认使用的插件),那么您可能正在进行分叉测试。分叉测试在单独的JVM中运行,JVM属性不会传递给它,除非您显式地这样做

有关分叉的更多详细信息,请参见


此外,每个插件都在自己的上下文中运行(而且,我相信它有自己的类加载器)。因此,您对属性所做的更改将仅在插件的范围内可见(我相信同一插件的不同
-s可以共享这些属性,但这需要仔细检查。

我也遇到了问题:一个插件设置了系统道具,而在测试时它们没有设置

因此,我制作了第一个设置maven项目属性的插件,并制作了surefire插件,在测试阶段将它们读入系统属性(使用'systemPropertyVariables'参数)


希望能有帮助,但我不知道exec maven插件,所以这个技巧可能不会被你接受。

我也是maven的新手,但你确定这就是你列出它们的方式吗?我非常确定可以通过这种方式实现。在pom中放置变量对我来说不是一个选项。它们是从复制到测试类的文件加载的/在过程测试期间加载的urces阶段。您提到的这个上下文与测试阶段的分叉VM有什么共同点吗?为什么您不能将它们从该文件加载到pom中?