0

我们需要使用不同版本的 deps 构建项目(在此示例中,Postgres 8 和 Postgres 9)。此外,我们的开发人员在他们的计算机上拥有不同版本的数据库。

我试图做这样的事情:

    <profile>
        <id>postgres9</id>
        <properties>
            <postgres.driver.version>
                9.0-801
            </postgres.driver.version>
        </properties>
    </profile>

    <profile>
        <id>postgres8</id>
        <properties>
            <postgres.driver.version>
                8.3-603
            </postgres.driver.version>
        </properties>
    </profile>

    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgres.driver.version}</version>
    </dependency>

    <properties>
        <postgres.driver.version>8.3-603</postgres.driver.version>
    </properties>



    mvn clean test -Ppostgres9

但它没有用。配置文件变量根本没有覆盖 pom 变量。此外,即使使用 ~/.m2/settings.xml,我也无法做到这一点。

有谁知道如何做到这一点?谢谢。

4

2 回答 2

1

很长一段时间以来,我们一直在尝试在我们的项目中做类似的事情。唯一有效的方法是通过 -Dpostgres.driver.version=8.3-603。由于某种原因,在计算依赖关系之前不会对变量进行插值。

奇怪的是,它似乎适用于我在 Maven 3.0.2 下的一些项目。我现在正在尝试更深入地调查。

于 2011-02-16T14:58:18.183 回答
1

我有同样的问题。在父 pom 中将版本(带有属性)从依赖项移动到依赖项管理为我解决了这个问题:

旧: pom.xml:

<dependencies>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgres.driver.version}</version>
    </dependency>
</dependencies>

新: pom.xml

<dependency>
    <groupId>postgresql</groupId>
    <artifactId>postgresql</artifactId>
</dependency>

父pom:

  <dependencyManagement>
    <dependencies>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgres.driver.version}</version>
    </dependency>
    </dependencies>
  </dependencyManagement>
于 2012-02-17T09:49:04.637 回答