【问题标题】:How to implement variable dependency versions in Maven3 using _profiles_?如何使用 _profiles_ 在 Maven3 中实现变量依赖版本?
【发布时间】:2011-01-26 07:22:31
【问题描述】:

我们需要使用不同版本的 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,我也无法实现。

有人知道怎么做吗?谢谢。

【问题讨论】:

  • 这看起来是正确的。也许这种依赖在其他地方被覆盖/重复?

标签: variables dependencies version interpolation maven-3


【解决方案1】:

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

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

【讨论】:

  • 我最近发现了一个maven-dependencies-plugin,也许可以用它来完成,但是我暂时没有去查看。
【解决方案2】:

我遇到了同样的问题。 在父 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>

【讨论】:

    猜你喜欢
    • 2022-08-03
    • 2022-11-08
    • 2016-11-01
    • 2020-11-26
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    • 2019-12-25
    • 2023-02-23
    相关资源
    最近更新 更多