2011-01-26 1 views
0

異なるバージョンのdepsでプロジェクトをビルドする必要があります(この例では、Postgres 8とPostgres 9)。また、開発者は自分のコンピュータ上に異なるバージョンのDBを持っています。_profiles_を使用してMaven3で変数依存バージョンを実装する方法は?

私はこのような何かをしようとしています:

<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を使用しても達成できません。

誰でもこれを行う方法を知っていますか?ありがとう。

+0

これが正しく表示されます。おそらく、この依存関係は他の場所で上書き/反復されますか? – Raghuram

答えて

1

私たちはかなりの間、私たちのプロジェクトで同様のことをやろうとしてきました。一貫して動作する唯一の方法は、-Dpostgres.driver.version = 8.3-603を渡すことです。何らかの理由で、依存関係が計算される前に変数が補間されません。

奇妙なことに、それはで動作しているようです。Maven 3.0.2のプロジェクトのです。今私はもっと深く調査しようとしています。

+0

私は最近、maven-dependencies-pluginを発見しました。おそらくそれで済むかもしれませんが、今はチェックアウトしていません。 –

1

私は同じ問題を抱えていました。親ポンポンに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> 
関連する問題