使用 Maven 的环境变量

2022-08-31 09:05:18

我已经将一个项目从Eclipse移植到Maven,我需要设置一个环境变量来使我的项目正常工作。

在 Eclipse 中,我转到“运行 -> 运行配置”,然后在“环境”选项卡下,将“WSNSHELL_HOME”设置为值“conf”。

我该怎么做?Maven


答案 1

您可以在命令行上传递它,因为

mvn -DmyVariable=someValue install

[更新]请注意,参数的顺序很重要 - 您需要在命令之前指定任何选项。[/更新]

在 POM 文件中,可以将系统变量(在命令行或 pom 中指定)称为 ,环境变量称为 。(感谢评论者的更正。${myVariable}${env.myVariable}

更新2

好的,所以你想把你的系统变量传递给你的测试。如果 - 正如我所假设的那样 - 您使用Surefire插件进行测试,最好的方法是在您的部分中指定pom中所需的系统变量,例如plugins

<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            ...
            <configuration>
                ...
                <systemPropertyVariables>
                    <WSNSHELL_HOME>conf</WSNSHELL_HOME>
                </systemPropertyVariables>
            </configuration>
        </plugin>
        ...
    </plugins>
</build>

答案 2

从surefire-pluging传播到你的测试,这些属性是不可靠的(我不知道为什么它适用于eclipse)。在命令行上使用 maven 时,请使用 argLine 属性来包装您的属性。这会将它们传递给您的测试-D

mvn -DargLine="-DWSNSHELL_HOME=conf" test

用于读取代码中的值。看看这篇文章关于 和 的区别。System.getPropertySystem.getenvSytem.getProperty


推荐