19

J2EE モジュール参照機能を使用すると、一般的な Java ライブラリ プロジェクトを作成できますが、Web コンテンツに対してこれを行う適切な方法が見つかりません。

共通の JSP、CSS ファイル、JavaScript ライブラリ、さらには記述子フラグメントを多数の動的 Web プロジェクトで使用したいので、これらのアーティファクトは 1 か所だけで編集されますが、各動的 Web プロジェクト WAR にエクスポートされます。ファイル。

独自のスクリプトを作成し、エクスポート プロセスに接続することなしに、Web スペースで再利用性を促進する方法を見つけることができないことに驚いています。

これを行う方法はありますか?ありがとう。マット。

4

4 に答える 4

13

私は長い間同じ問題に取り組んできましたが、最終的に「リンクされたフォルダー」という良い解決策に出くわしました。これは、シンボリック リンクと同様に機能する Eclipse の機能です。これにより、単一の物理フォルダーを複数のプロジェクトにマップできます。このソリューションの優れた点は、特別なビルド手順を必要としないことです。そのため、Eclipse はテストのためにローカルの Tomcat サーバーに変更を自動的にデプロイできます。

私の構成は次のとおりです。「SharedContent」という名前の Eclipse プロジェクトがあります。WebContent ディレクトリ内には、サブディレクトリ「shareRoot」があります。すべての再利用可能なファイル (.jsp、.css など) は、SharedContent/WebContent/shareRoot の下のどこかに配置されます。これは動的 Web プロジェクトであるため、適切なエディターがすべて有効になっていますが、実際にビルドまたは展開することはありません。

私の他のプロジェクトでは、shareRoot を指すリンク フォルダーを追加します。Eclipse 3.6 での手順は次のとおりです。

  1. パッケージ エクスプローラーで、再利用可能なファイルを含める必要があるプロジェクトの WebContent ディレクトリを右クリックします。

  2. [新規] -> [フォルダー] を選択します。

  3. 「詳細 >>>」ボタンをクリックします。

  4. [別の場所へのリンク (リンクされたフォルダー)] ラジオ ボタンを選択します。

  5. このすぐ下のテキスト ボックスで、[参照] をクリックします。

  6. ソース ツリーで、SharedContent/WebContent/shareRoot に移動します。次に、すべてのダイアログが消えるまで、[OK]、[開く]、[終了] ボタンをクリックします。

共有コンテンツがプロジェクトにマップされました。面倒なことに、これらのファイルを参照するときは URL に「shareRoot/」を含める必要がありますが、お気に入りの URL 書き換えフィルターを使用してこれを回避できます。

Java ソース ツリーで同様のトリックを使用して、Java ファイルを複数のプロジェクトにマップできます。ローカル Tomcat サーバーで変更をテストするたびに .jar を再構築する必要がなくなるため、共有コードを .jar ファイルにビルドする代わりに、これを開始しました。

于 2010-10-27T22:53:47.860 に答える
3

独自のスクリプト (たとえば、ant を使用したカスタム ビルド ステップ、Eclipse で簡単に構成可能) を作成することは、より実用的なソリューションの 1 つだと思います。

また、複数の Web アプリケーションを作成し、それぞれのリソースを参照することもできます。これは、css や画像などでは簡単ですが、使用可能なコードにアクセスする必要がある jsp ではそれほど簡単ではありません。

コンテキスト (webapplication など) の tomcats crossContext="true" オプションを使用して、あるアプリケーションが別のアプリケーションのクラスにアクセスできるようにするいくつかのトリックを想像できますが、まだ試していません。

申し訳ありませんが、それはあなたが聞きたい答えではないと思います...

于 2008-12-14T18:02:12.593 に答える
3

Subversion を使用している場合は、svn:externalsを使用して両方のプロジェクトの共通ファイルを参照できます。次に、共通ファイルを 1 か所で編集できます。これを行うと、svn upすべてが同期されます。

于 2008-12-14T18:13:06.813 に答える
-2

ハハ、私はあなたに遅い驚きを与えます

私は中国人です、私の英語は下手ですが、私はあなたを助けることができます.

Olaf Kock は正しいですが、彼の答えは完璧ではありません。

これが完璧な答えです。次の URL を参照する必要があります。

ここをクリック

URL ページのプロパティ コンテンツ ボックスの例は正確ではありません。

ファイルを共有する必要がある場合:

a.jsp  svn://myhome.com/svn/myproject/trunk/a.jsp

フォルダを共有する必要がある場合:

xml  svn://myhome.com/svn/myproject/trunk/xml
于 2013-03-14T08:49:38.333 に答える