2011-07-23 25 views
14

冗長で残念...EclipseのMavenプロジェクト - デプロイメントアセンブリがビルドに失敗する

私はいくつかの既存のMavenプロジェクトを持っています。 Maven - > Import import Maven projectsを使ってEclipseにインポートしました。

これは私に6個のプロジェクトと、その下に6個すべてをリストする1個のプロジェクトを与えました。 (プロジェクトの6つのモジュールが定義されており、6つのEclipseプロジェクトに変換されています - どのように動作するのか理解しています)

プロジェクトAの1つにプロジェクトBとC(コンパイル時と実行時)

ビルドパス - ビルドパスでは、私はMaven依存関係のライブラリの1つを持っています。それはうまくいく。

展開アセンブリ - しかし、展開アセンブリでは、web-inf/libへの展開エントリはありません。そのため、Tomcatを起動すると、必要なjarファイルまたはプロジェクトBとCが見つかりません。 これで、デプロイメントアセンブリへのエントリが追加されました。source-maven依存関係deploy-web-inf/lib。 Tomcatが起動し、プロジェクトAのwebappが起動します。これは、しかし、日食のビルドを壊し

- ビルド日食時には文句: これは私が見

は、ビルド・パスの下に、新しいエントリがウェブに追加があるためである「無効なクラスパスがサポートされていない輸出プロジェクトエントリを公開します」 -inf/libは、maven-dependenciesの下で公開/エクスポートします。これを削除すると、展開アセンブリからmavenエントリも削除されます。

唯一の回避策は、展開アセンブリでは、mavenによって生成されたターゲットの下でweb-inf/libを指定しますが、プロジェクトBとCの無効なコピーが取得されるということです。

なぜこの設定が必要なのは、EclipseでプロジェクトBとCを変更してEclipseでビルドすると、プロジェクトAをデバッグしているときに変更を表示したいからです.Mavenビルドを実行したくないからです時間がかかるので、BとCに再び表示されます。

ご協力いただきまして誠にありがとうございます。

私はMAVEN2_CLASSPATH_CONTAINERを含めようとしましたが、それは常に空です。そして、tomcatを実行すると、必要なライブラリを見つけることができません。 (MAVEN2_CLASSPATH_CONTATINERはどのような値ですか?)

これはEclipse Indigo Mac OSX上です。

+0

はい、私は助けたいと思いますが、テキストは読めません。 –

答えて

1

イムのために、あなたが手動でも.classpathファイルに

<classpathentry combineaccessrules="false" kind="src" path="/B"/> 
を以下を追加できるようです
34

デプロイメントアセンブリに関連プロジェクトを追加する必要があります。

プロジェクトを右クリック - >プロパティ - >展開アセンブリ - 私が述べたように> ...

+2

これは、受け入れられた答えよりはるかに良い解決策です。 – SoWeLie

+0

私はこれが投稿されたエラーの解決策を解決することに同意しますが、プロジェクトはまだIvyから引き込まれているので、付随するエラーは解決しません。 ( "プロジェクトには同じアーカイブ名を持つ別の依存関係が含まれています。") – Marcus

+1

今日でもこの問題が発生しましたが、私の展開アセンブリにはサブプロジェクト/モジュールが含まれています。これを解決するには、最初にすべてのサブプロジェクト/モジュールを削除し、再度展開アセンブリに追加しました。 – PushkarT

5

が..butない完全にそれを考え出し追加

は、だから私は、展開アセンブリに Mavenの依存関係を追加しました早く

Maven dependency -> WEB-INF/lib 

、さらに同様CプロジェクトBを追加しました:

B -> WEB-INF/lib and C->WEB-INF/lib 

どういうわけかこのようにBとCはJavaのビルド・パスにパブリッシュ/エクスポートに追加されません。私はEclipseがBとCをMavenリポジトリからエクスポートせず、プロジェクトBとCからエクスポートする方法を知っています。とにかく、いくつかの他の日のためのthats

.. 今、このために検索し、誰のために幸せ:)

0

私はこの問題を抱えていましたが、これらの答えのどれも問題を正しく修正できないと思います。代わりにm2eclipseの回避策(クラスパスとデプロイメントアセンブリを管理する必要があります)。私にとっては、m2eclipseをm2eclipse-wtp(別のプラグイン)なしで使用していた問題です。

プラグインの詳細については、this SO answerを参照してください。

0

展開アセンブリにMavenを使用している場合は、(プロジェクト - >プロパティ - >展開アセンブリ)の関連プロジェクト/やMaven Javaのビルド・パスのエントリを追加することができます論文の関連プロジェクトはファセット互換性がある場合

が次にチェックします。 (プロジェクト - >プロジェクトファセット)

0

Maven Dependenciesを含めることによって、プロジェクトBとプロジェクトCの依存関係も含めます。プロジェクトBとプロジェクトCを手動で組み込む必要があります。

動作する正確な修正です。 プロジェクトA - >プロパティ - >展開アセンブリ

[追加]、[プロジェクト]の順にクリックします。 BとCを選択します。再構築後に問題が解決されます。

7

私はこれをやって解く:

右私の日食プロジェクト - > Mavenの上でクリック - あなたは、クラス内の同じjarファイルの複数のエントリを持っている場合、このエラーが発生する可能性があります...>の更新プロジェクト構成

+1

プロジェクトの設定を更新すると実際に警告が削除されますが、デプロイメント記述子からプロジェクトのエントリも削除されます:( –

+0

はい、あなたは正しいです。 – Alv21

0

をパス。したがって、クラスパスを確認し、重複するエントリを削除する必要があります。

関連する問題