2

Apache Ant と Apache Ivy を使用して、(開発中に) ローカルの Tomcat インスタンスにデプロイされる Web アプリケーションを構築します。いくつか質問があります:

  1. 正常に動作する Maven2 リポジトリからほとんどの依存関係を取得したいのですが、サーブレット JAR には Tomcat が提供するものを使用したいと考えています。Ivyを使用してそれを行う方法はありますか? そして、そうすることについてどう思いますか?
  2. Ant を使用して Ivy JAR をダウンロードし、~/.ivy2/jar/ivy.jar に「自動インストール」します。Ivy キャッシュはデフォルトの場所 ~/.ivy2/cache にあります。これらの場所は両方とも、意図的にプロジェクト ディレクトリの外に置いています。良いアイデア?
  3. ビルド ファイルに Ant を使用し、Ivy を使用して依存関係を解決し、WAR ファイルをコンパイルしてローカル (現時点では) Tomcat インストールにデプロイする方法の例はありますか? さらに変更できるベストプラクティスとして何かを探しています。
  4. Ivy の Web サイトでいくつかの例を使用し、それらを変更しました。何か変更すべき点はありますか? ビルド ファイルはhttp://pastebin.com/f7b34abc2で確認できます。ここに XML コードを貼り付けるのに問題があったためです。

(提案が意図されていたとしても、 Maven2を使用する必要があるという提案を探しているわけではないことに注意してください。)

4

1 に答える 1

2

実行時に、Tomcat は独自のクラスローダーを使用して、その中の jar を除外javax.servlet.Servletします。本当にそれに対してコンパイルする必要がある場合は、ant スクリプトでそれを実行し、それをコピーするか、コンパイル クラスパスで参照する必要があります。

他のものについては、ivy をオンデマンドでダウンロードすることをお勧めします。これは、過去に行ったように、ivy jar をプロジェクト scm リポジトリにチェックインするのを防ぐためです。プロジェクト ディレクトリにダウンロードするか、ユーザー ホームにダウンロードするかは問題です。個人の好み。一方、ivy キャッシュは他のプロジェクトと共有する必要があるため、ユーザーのホーム ディレクトリは適切な場所です。

必要な jar ファイルはプロジェクトに対してローカルであるため、ivy:retrieve を実行した後は、war ファイルのビルドに違いはありません。ant war タスクを使用して通常どおり war を作成するだけです。これは ivy の利点の 1 つです。jar がダウンロードされると、ビルドで行う必要がなくなり、ant を使用してプロジェクトをコンパイルおよびパッケージ化できます。

ビルドファイルをざっと見てみると、完全に正常に見えます。

お役に立てれば。

于 2009-01-10T21:59:53.107 に答える