Maven属性重载

Den*_*nov 6 teamcity maven-2 system-properties

我有一个非常简单的maven描述符,它定义了一些属性:

<?xml version="1.0"?>
<project
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  http://maven.apache.org/xsd/maven-4.0.0.xsd"
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

  <properties>
    <it.port>8080</it.port>
  </properties>

</project>
Run Code Online (Sandbox Code Playgroud)

我可以it.port用命令覆盖属性:

$ mvn -Dit.port=8181 verify
Run Code Online (Sandbox Code Playgroud)

但是以下命令不能按预期工作:

$ MAVEN_OPTS="-Dit.port=8181" mvn verify
Run Code Online (Sandbox Code Playgroud)

这将系统变量传递给JVM,但是maven拒绝覆盖此属性和给test(8080)的默认值.原始问题是TeamCity(out CI服务器)将系统变量传递给JVM MAVEN_OPTS,因此属性覆盖不起作用.

我可以用MAVEN_OPTS环境变量覆盖maven属性吗?

kro*_*old 11

不,你不能.您可以:

  • 使用本地计算机上的settings.xml指定属性
  • 在项目pom中使用配置文件
  • 直接在命令行上使用-D.