Eclipse から EAR をエクスポートするときに、デプロイされたコードをフィルターするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1178213

質問

EAR プロジェクトが関連付けられた基本的な Web アプリケーション (Eclipse の動的 Web プロジェクト) があります。junit テスト コードがデプロイメント EAR ファイルに含まれないようにしようとしています。

私の Web プロジェクトには、「src」という名前のソース フォルダーと、「test」という名前のソース フォルダーがあります。Eclipseを使用してエクスポートする場合、「test」ソースフォルダーの.classファイルをEARの外に保持する必要があります。

ant を使用するとこれが簡単であることはわかっていますが、Eclipse を使用すると不可能のようです。プロジェクトを右クリックして、ear ファイルをエクスポートします。テストクラスは常に含まれます。

.setting/org.eclipse.wst.common.component.xml ファイルを手動で編集してテストフォルダーに関連付けられたタグを削除すると機能しますが、他の開発者がビルドパスに関連するものを変更すると、ファイルが再生成されます...

明らかな何かが欠けていますか..狂ったようにグーグル検索しましたが無駄でした..Eclipseのドキュメントをチェックしましたが、途方に暮れています。

役に立ちましたか?

解決

奇妙である、直接可能ではないようです。ここでは、試みることができる回避策のカップルがいます。

(これはおそらく、とにかく従うことをお勧めです)、私はJavaプロジェクトへのWebプロジェクトからJavaファイルを移動すると思います。いずれかの方法で、別の「テスト」Javaプロジェクトを作成し、そのプロジェクトにテストソースを移動します。あなたのテストプロジェクトは、それがテストのための型へのアクセス権を持っているので、依存関係として「メイン」のJavaプロジェクトを宣言したが、戦争には含まれていないので、テストクラスが展開されることはありません。

あなたは一つのプロジェクトにソースを保持したい場合は、

また、リンクされたリソースを使用するテストプロジェクトを設定することができます。私はをhref="https://stackoverflow.com/questions/1130400/eclipse-classpath-entries-only-used-for-tests/1130437#1130437">掲載しましたプロジェクト間でソースの場所を共有するためにリンクされたリソースを使用することができます。このアプローチでは、テストソースはまだメインプロジェクトのビルド・パス上にないので、jarファイルにバンドルされませんが、ソース管理が簡単になるので、物理的にプロジェクトに配置されています。

他のヒント

PDEを除いて、Eclipse 3.7を使用して同様のことを行っています。Eclipse/OSGi プラグイン/バンドルをデプロイしており、2 つの Java ソース ディレクトリがあります。ソースとテスト

2 つの Eclipse プロジェクト ファイルの内容を微調整して、テスト コードをビルドから分離しました。

.classpath:

<classpath>
    <classpathentry kind="src" path="src"/>
    <classpathentry export="false" kind="src" path="test"/>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    <classpathentry export="false" kind="lib" path="/thirdparty/junit/junit.jar"/>
    <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
    <classpathentry kind="output" path="bin"/>
</classpath>

これらの変化は読書によって動機付けられました これ

これがあなたの状況に当てはまるかどうかはわかりませんが、 ビルドのプロパティ ファイルを使用して、生成された jar ファイルから「test」のコンパイル結果を除外します。

source.optimizing.jar = src/
#This doesn't contain test/ because we don't want it in the build.

bin.includes = META-INF/,\
               optimizing.jar
#The junit.jar is also exluded               

プロジェクト全体をビルドすると、テスト ファイルがまったくなくなります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top