Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Maven中重写TeamCity环境变量_Maven_Unit Testing_Teamcity_Maven Surefire Plugin - Fatal编程技术网

在Maven中重写TeamCity环境变量

在Maven中重写TeamCity环境变量,maven,unit-testing,teamcity,maven-surefire-plugin,Maven,Unit Testing,Teamcity,Maven Surefire Plugin,TeamCity提供了几个环境变量,这些变量在Maven的pom.xml中提供。例如,我的构建代理有一个属性env.JDK_18,指向服务器上的JRE安装。我在Maven中配置surefire插件时使用此属性: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> &l

TeamCity提供了几个环境变量,这些变量在Maven的
pom.xml
中提供。例如,我的构建代理有一个属性
env.JDK_18
,指向服务器上的JRE安装。我在Maven中配置surefire插件时使用此属性:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <jvm>${env.JDK_18}/bin/java</jvm>
        <!-- ... -->
    </configuration>
</plugin>

org.apache.maven.plugins
maven surefire插件
${env.JDK_18}/bin/java

不幸的是,环境变量在我的本地计算机上不可用。当在构建服务器上运行单元测试时,是否有任何Maven选项可以在本地(在我的
pom.xml
文件中)定义环境变量,并让TeamCity覆盖它?

为什么不在本地创建JDK_18环境变量?定义应该位于Maven配置中,因此,其他开发人员可以签出项目,而不必在他们的机器上本地创建环境变量。这是件好事。但是为了让开发人员能够检查内容并运行目标,无论如何都需要设置JAVA_HOME和M2_HOME变量。那只会是另一个。因为这更像是一个基础设施方面,JDK_18变量更适合在settings.xml中找到,而不是pom本身,除非在构建中嵌入JDK。我认为有相当多的调整/玩周围的属性,使其工作。因为它是TeamCity中的一个环境变量,所以我会为开发人员机器选择同样的东西。但是,您始终可以使用-D标志覆盖maven属性。因此,您可以在本地设置一个属性(propertyName),并为teamcity使用-DpropertyName=%JDK_18%启动构建。