0

維持する必要があるプロジェクトを継承し、ローカルホストで動作する Tomcat への Ant デプロイメントを取得しようとしています。展開タスクを実行すると、次のエラーが発生します。

BUILD FAILED
/.../build.xml:69: Problem: failed to create task or type deploy
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

同じ問題を抱えている他の人を調べてみたところ、一般的な問題は CLASSPATH と catalina-ant.jar の欠落に関連していることがわかりました。

lib-exec という名前のプロジェクト内のフォルダーに catalina-ant.jar を追加し、build.xml 内にこれらの jar が読み込まれます。

<path id="project.classpath">
    <fileset dir="${libDirectory}" includes="**/*.jar" />
    <fileset dir="${extLibDirectory}" includes="**/*.jar" />
</path>

${extLibDirectory}は次のように定義されます。

<property name="extLibDirectory" location="ext-lib" />

私のセットアップは次のとおりです。

  • マック OS X 10.8.4
  • Tomcat 7.0.42.0 (Homebrew 経由でインストール)
  • Java 1.6.0_51
  • アパッチ アント 1.8.4

コマンドラインからant deployタスクを実行してみましたが、追加もしました

export CLASSPATH=$CLASSPATH:/usr/local/Cellar/tomcat/7.0.42/libexec/lib

*~/.bash_profile* にこの方法で catalina-ant.jar を含めようとしましたが、何も機能していないようです。

私が台無しにしているアイデアはありますか?

4

1 に答える 1

1

Tomcat クラスを Ant クラスパスに含めることに加えて、「デプロイ」タスクを定義して、build.xml ファイルでtaskdefタスクを使用して Ant に認識させる必要があります (build.xml の先頭に配置します)。

build.xml 内のパスとプロパティの定義は、クラスパスとはまったく関係ありません (build.xml が処理されるとき、JVM は既に実行されています)。

フォルダーをクラスパスに配置してもおそらく役に立たないでしょう (代わりに、そのフォルダー内の jar アーカイブをクラスパスに含める必要があります)。

さらに、Ant が CLASSPATH 環境変数を気にするという保証はありません。Ant 起動スクリプトを検査し、場合によっては変更する必要があります。

于 2013-09-04T10:08:29.603 に答える