2012-01-05 7 views
1

私は依存関係管理のためにmavenを使用する非常に大きなプロジェクトに取り組んでいます。その一環として、Mavenプロファイルを使用して、テスト/ dev/production環境で異なる特定のプロパティファイルをビルドして置き換えます。Eclipse(STS)/ Mavenインテグレーションの問題

ビルドを実行するには、私はMavenを実行します:適切なプロファイルを使用してビルドし、mavens reactorは正しい順序でプロジェクトをビルドし、.marsフォルダにjarファイルを保存しますjar(ドメインjarを依存関係としてそのjarファイルに含めます)などです。これにより、最終的にwarファイルが生成され、実行するために必要なすべての正しいライブラリが生成されます。

eclipseがファイルを保存するたびに実行するデフォルトのビルドを実行すると、jarsはプロファイルでビルドされず、通常のビルドでのみビルドされます。

最終的なwarファイルをサーバーにプッシュすると、サーバーが起動したときに展開されます(Eclipseから起動され、展開されます)。mavenがwarファイルにパッケージしたすべてのjarファイルをlibフォルダに入れます。食べていたすべての瓶は造られていた。

例えば

lib/ 
    domain.jar (built by eclipse) 
    domain.SNAPSHOT.1.0.jar (built by maven) 
    etc 

これを防ぐ方法はありますか?これにより、すべてのプロパティファイルが2つ存在し、ロードされた順序だけが使用されるものを決定する最終的な結果が得られます。さまざまなプロパティとしての実際の手間は、さまざまな環境で使用されます。

+0

EclipseでプロジェクトをMavenプロジェクトとしてインポートしましたか? Build onコマンドラインは正常に動作しますか?最初の "mvn clean package"の代わりに "mvn install"を使用しています... – khmarbaise

+0

POMの複数の場所でfinalNameプロパティが定義されていますか? – Perception

+0

私の完全なMavenビルドゴールは:クリーンインストール-PprofileTestです。 Tomcatの展開された戦争の中でjarファイルの時刻を調べると、domain.jarは10.00というようにビルドされ、domain.SNAPSHOT.1.0.jarは10.06にビルドされました。 6分と推定される)。これは依存関係を解決し、独自のバージョンのjarファイルをサーバーにプッシュしようとしているように、日々の問題ではありません。 –

答えて

1

私は、この問題に対して少しばかげた解決策を見つけました。 Webプロジェクトのプロパティで

- 私は問題のjarファイルのパスを修正>の展開組立これは、生成された日食につながる

WEB-INF/autogen/domain.jar

WEB-INF/lib/domain.jar

から domain.jarを例えばTomcatが起動するときに読み込まれないフォルダに展開されるjarファイル(間違ったプロパティファイルを持つ)。完璧な解決策ではありませんが、ドメインのインターフェースが変更された場合など、Webプロジェクトのコード補完やエラーメッセージのようなeclipse自動ビルドのすばらしいことがすべて可能になります。

この場合、このままにしておきます。

+0

私が見たことから、これはm2eが協力していないときのかなり一般的な解決策です。 – deterb

+0

この回答の受け取りを削除します。これでも問題は完全に解決されていません。問題は、mavenが依存関係をリフレッシュするたびに、ファイルをWEB_INF/lib/domain.jarに戻すということです。 また、リフレッシュ(定期的にEclipseにMavenビルドが完了したことを認識させる必要があります)では、そのjarを参照するすべてのファイルがビルドパスを使用できなくなるため、ビルドパスの問題が発生します。 Tomcat startup.batスクリプトにいくつかの行を書き込んで、Tomcatの起動前にファイルを削除すると思っています。 –

+0

他の方向に進んでみてください - ディレクトリmavenを変更してファイルを入れてから、ディレクトリが適切なwarディレクトリにマップされていることを確認してください。 – deterb

関連する問題