代码之家  ›  专栏  ›  技术社区  ›  Denis Bazhenov

Maven系统属性优先级

  •  2
  • Denis Bazhenov  · 技术社区  · 15 年前

    我有追随者pom.xml文件

    <project>
      <properties>
        <buildNumber>dev</buildNumber>
      </properties>
      <build>
        <finalName>${project.artifactId}-${project.version}-${buildNumber}</finalName>
      </build>
    </project>
    

    这在开发机器上运行良好。如果我跑了 mvn package project-1.1-dev.war 神器。如果我跑了 mvn package -DbuildNumber=121 我有 package-1.1-121.war .

    但是我们的CI服务器(TeamCity)总是 项目-1.1-开发战争 尽管事实上 buildNumber 属性传递给maven(如果我从 pom.xml ,maven使用正确的文件名构建工件)。

    似乎系统属性解析优先级在某种程度上取决于平台(maven版本在开发人员机器和TC-2.2.1上都相等)?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Romain Linsolas    15 年前

    有点奇怪。。。也许您不能强制命令行中给定的参数比 <properties>

    一个想法是使用一个配置文件来定义属性 buildNumber :

    <profiles>
        <profile>
            <id>dev-property</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <buildNumber>dev</buildNumber>
            </properties>
        </profile>
    </profiles>
    

    建筑编号 将等于 dev 价值观。现在,在TeamCity命令行中,使用以下命令禁用此配置文件 mvn ... -P !dev-property ! 在配置文件id指示必须禁用配置文件之前)。

        2
  •  1
  •   Community Mohan Dere    9 年前

    你的问题的答案是另一个问题,所以: Maven property overloading

    -DbuildNumber=121 在maven命令行上(在“3 build step:maven”页上),因为在“6 properties and variables”页上设置系统属性“buildNumber”不会覆盖maven属性。

        3
  •  -1
  •   Jon Freedman    15 年前

    你熟悉这个概念吗 SNAPSHOT 主要次要增量 开发 ,如果你能忍受的话 快照 相反,它应该做你想做的。

    推荐文章