2010-11-20 17 views
4

私はいくつかのモジュールを集約するMaven POMを持っています。Maven集計POMと目標?

<project [stuff]> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.fuhu.osg</groupId> 
    <artifactId>UserManagement</artifactId> 
    <packaging>pom</packaging> 
    <version>1.0</version> 
    <name>UserManagement</name> 

    <modules> 
    <module>core</module> 
    <module>war</module> 
    <module>ejbs</module> 
    <module>ear</module> 
    </modules> 
</project> 

トップレベルのPOMに対してモジュールに適用されない目標を実行します。 mvn db-migrateのようなもの:を作成してください。つまり、これはサブプロジェクトに対してこのコマンドを実行しようとするようですが、これは他のすべての目標に対して正しいものですが、この目標ではありません。

Maven POMをいくつかの目標の集計と他のプロジェクトの通常のプロジェクトの両方にする方法はありますか?

+0

プロファイルを試しましたか?この場合、それがうまくいくと思います。 – javamonkey79

答えて

6

あなたはMavenビルドプロファイルの助けを借りているかもしれません。特定のプロファイルを使用するときに呼び出されるサブモジュールを簡単に設定することは簡単です。

http://maven.apache.org/guides/introduction/introduction-to-profiles.html

... 
    <profiles> 
    <profile> 
     <id>db</id> 
     <modules> 
     <module>core</module> 
     </modules> 
    </profile> 
    <profile> 
     <id>all</id> 
     <activation> 
     <activeByDefault>true</activeByDefault> 
     </activation> 
     <modules> 
     <module>core</module> 
     <module>war</module> 
     <module>ejbs</module> 
     <module>ear</module> 
     </modules> 
    </profile> 
... 
ようなもので、DBプロファイルを使用して、DBタスクを開始し

:悲しいことに、私はMavenを見つけることができません

$ mvn -Pdb db-migrate:create 

プロファイルの自動起動は、システム環境を使用して可能であるなどプロパティを使用して、特定の目標が実行されたときにプロファイルの自動アクティブ化を有効にします。

+0

ブリリアント。それはうまくいくでしょう。サンプルに関する1つの注釈:アクティブ化親タグにactiveByDefaultをラップする必要がありました。 –

関連する問題