在Maven中重写TeamCity环境变量
TeamCity提供了几个环境变量,这些变量在Maven的在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
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%启动构建。