我们需要使用不同版本的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
但它没有用。 Profile变量根本不会覆盖pom变量。而且,即使使用〜/ .m2 / settings.xml,我也无法实现。
有谁知道怎么做?感谢。
答案 0 :(得分:1)
我们一直试图在我们的项目中做类似的事情。始终如一的唯一方法是传递-Dpostgres.driver.version = 8.3-603。出于某种原因,在计算依赖关系之前不会插入变量。
奇怪的是,它似乎适用于Maven 3.0.2下我的项目的部分。我现在正试图深入研究。
答案 1 :(得分:1)
我遇到了同样的问题。 将版本(带属性)从依赖项移动到父pom中的dependencyManagement解决了它:
<强>旧:强> 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>
父母:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgres.driver.version}</version>
</dependency>
</dependencies>
</dependencyManagement>