如何在JavaMaven项目中定义环境变量?

如何在JavaMaven项目中定义环境变量?,maven,environment-variables,pom.xml,testng.xml,Maven,Environment Variables,Pom.xml,Testng.xml,我正在开发一个用于测试UI和API的混合框架 我希望在QA和UAT环境中执行相同的测试。我有用于qa和uat的.properties文件。以及将执行测试的testng.xml文件。 我有特定于环境的UI和API测试 我想定义一个通用环境变量,当在maven执行(mvn测试)期间传递该变量时,.properties文件读取器将在执行UI或API测试之前读取该变量-如何/在何处定义此环境变量? <configuration> <

我正在开发一个用于测试UI和API的混合框架

我希望在QA和UAT环境中执行相同的测试。我有用于qa和uat的.properties文件。以及将执行测试的testng.xml文件。 我有特定于环境的UI和API测试

我想定义一个通用环境变量,当在maven执行(mvn测试)期间传递该变量时,.properties文件读取器将在执行UI或API测试之前读取该变量-如何/在何处定义此环境变量?


            <configuration>
                <environmentVariables>
                    <environemnt>${environemnt}</environemnt>
                    <browser>${browser}</browser>
                </environmentVariables>
            </configuration>
${Environment} ${browser}
当在pom.xml文件中的maven surefire plugin下添加上述配置时,可以在所需的环境和浏览器中执行所需的testng.xml文件。 e、 g

mvn test-Denvironment=qa-Dbrowser=firefox-DsuiteXmlFile=testng_ui.xml


通常,在创建框架时(假设从头开始;不推荐,因为有许多框架可以直接选择,然后根据需要进行定制),您应该负责读取属性文件。现在从等式中删除此细节,您可以将的“通用环境变量”直接放入
pom
文件中。以下是一个解决方案:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin.version}</version>
    <configuration>
        <systemProperties>
            <property>
                <name>myUniversalProperty</name>
                <value>Same in all envs</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

org.apache.maven.plugins
maven surefire插件
${maven surefire plugin.version}
我的宇宙属性
所有环境中都相同

现在,这将允许您使用
System.getProperty(“myUniversalProperty”)
表达式读取值。请注意,在本例中,
也可以在运行应用程序时作为命令行参数传递。

不推荐使用,因为有许多框架可以直接选择,然后根据需要进行定制-->您指的是哪些框架?事实上,我正在从头开始开发一个框架,可以用于ui、api测试,也可以用于通过testNG和Cucumber执行,这不取决于需求吗<例如,如果确实需要,code>Spring可以直接读取属性文件以及
pom
中定义的属性,或者可以通过命令提示符直接传递属性值,从而完全消除在
pom
中进行此类配置的需要。重点是,你只需要做一些研究,你可以通过不重新发明整个轮子来帮助自己。