【问题标题】:Pass properties to maven profile while running tests in intellij在 intellij 中运行测试时将属性传递给 Maven 配置文件
【发布时间】:2014-05-12 12:15:42
【问题描述】:

我有一个带有配置文件的 maven pom。在其中一个配置文件中,我指的是这样的系统变量

<profile>
    <id>kasper</id>
    <properties>
        <user>${username}</user>
    </properties>
</profile>

当我使用 -Dusername=kasper 调用 maven 命令行时,一切似乎都很好。

问题是,我在 IntelliJ 中导入了这个项目。 IntelliJ 13 允许通过 Maven 工具窗口选择要运行的配置文件。

当我在运行测试时选择要使用的这个特定配置文件时,我似乎无法找到如何正确替换这个属性,即真正告诉 IntelliJ 它必须选择这个或那个用户名来运行我的 maven 测试,我尝试了一切,但似乎并没有起色。

有人有想法吗?

卡斯帕

【问题讨论】:

    标签: java maven intellij-idea


    【解决方案1】:

    在 IntelliJ 14 中,maven 配置文件不会传递给测试(默认情况下)。

    您可以通过 Settings -> Maven -> Running Tests 中的一个选项激活此机制,该选项允许您将 systemPropertyVariables 传递给单元测试 - 这应该涵盖您的情况。

    【讨论】:

    • 这应该是正确的答案,因为它普遍适用并描述了根本原因。在这方面,我还注意到第 14 版中的 IDEA 行为发生了变化。
    • 我使用的是 IntelliJ 2016.1.3,默认启用此选项
    【解决方案2】:

    查看 -> 工具窗口 -> Maven 项目 然后右键单击所需的阶段,例如打包它将是上下文菜单中的第二项,称为 *创建 [project_name] 包 ...*

    在某些选项卡上,您可以覆盖 VM 属性、添加配置文件等。

    【讨论】:

    • 谢谢,确实成功了,摆弄了各种选项,但没想到右键单击那个生命周期的东西。
    • 嗯,我猜我没完全明白。当我进行这些运行配置之一时,参数(在我的情况下为测试)我填写的参数确实被 JUnit 配置拾取,这是我想要的,然后我可以调试等等,但它似乎非常什么时候适用,什么时候不适用(例如,如果我制作一个新的 junit 运行配置,我需要重新制作 maven 配置)。 maven配置和junit配置到底是怎么联系的?
    • @Kasper,不确定此链接是否存在。你最好再问一个问题;)
    【解决方案3】:

    好的,我明白了。

    转到 JUnit 或 TestNG(无论您使用哪个)上的 Intellij 配置。在 VMoptions... 下,您可以将 Maven 中的自定义系统属性变量添加到 -ea 选项旁边的调试器中,就像终端命令一样。

    -ea -Dtest.environment=QA

    【讨论】:

      猜你喜欢
      • 2016-11-08
      • 1970-01-01
      • 2018-04-13
      • 1970-01-01
      • 2016-12-20
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多