Eclipseでは、build.xmlに対して5つの警告が表示されます。
taskdef class.org.Apache.catalina.ant.InstallTask cannot be found
taskdef class.org.Apache.catalina.ant.ListTaskcannot be found
taskdef class.org.Apache.catalina.ant.ReloadTaskcannot be found
taskdef class.org.Apache.catalina.ant.StartTask cannot be found
taskdef class.org.Apache.catalina.ant.StopTask cannot be found
次のシステム環境変数を設定しました(Windows 7)
ANT_HOME: C:\Apache-ant-1.8.4
CATALINA_HOME: C:\Apache-Tomcat-7.0.29
Java_HOME: C:\Program Files\Java\jdk1.6.0_34
and have added %ANT_HOME%/bin to PATH
編集:catalina-ant.jarもC:\ Apache-ant-1.8.4\libに追加しました
コードのその他の部分:
<!-- We need the Catalina jars for Tomcat -->
<!-- * for other app servers - check the docs -->
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
</fileset>
</path>
<taskdef name="install" classname="org.Apache.catalina.ant.InstallTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.Apache.catalina.ant.ReloadTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="list" classname="org.Apache.catalina.ant.ListTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.Apache.catalina.ant.StartTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.Apache.catalina.ant.StopTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
どうしましたか?
CATALINA_HOMEについてのみ言及しても機能しないと思います。 Antのクラスパスにcatalina-ant jarを配置する必要があります。 Tomcat 7では、この目的のために4つのjarがありましたが、以前のバージョンでは、このためのjarは1つしかありませんでした。 リンク に従ってください。
リンクから引用したように、
まず、TomcatマネージャーがCatalina-Antで使用できるように構成されていることを確認します。
manager-script
がTomcat_HOME/conf/Tomcat-users.xml
のユーザーの1人のロールに含まれていることを確認してください。例えば:
<Tomcat-users>
<user name="admin" password="s3cr£t" roles="manager-gui,manager-script"/>
</Tomcat-users>
Catalina-Ant for Tomcat 6は、単一のJARファイル内にカプセル化されました。 Catalina-Ant for Tomcat 7には4つのJARファイルが必要です。
Tomcat_HOME/bin
からの1つ:
Tomcat-juli.jar
Tomcat_HOME/lib
からの3つ:
catalina-ant.jar
Tomcat-coyote.jar
Tomcat-util.jar
AntでJARを使用できるようにするには、少なくとも3つの方法があります。
- JARを
ANT_HOME/lib
フォルダーにコピーします。その後、Antはそれらを見つけます。- ソース管理システムにチェックインするプロジェクト内のフォルダーにJARをコピーします。次に、Antはそれらを見つけるためにパスIDを必要とします。
<path id="catalina-ant-classpath">
<fileset dir="${catalina-ant-dir}">
<include name="catalina-ant.jar"/>
<include name="Tomcat-coyote.jar"/>
<include name="Tomcat-util.jar"/>
<include name="Tomcat-juli.jar"/>
</fileset>
</path>
ここで、
catalina-ant-dir
はJARが格納されているディレクトリです。これにより、構築するすべてのマシンのAntインストールを変更する必要がなくなります。 Tomcat 7インストールから直接JARにアクセスします。次に、Antはそれらを見つけるためにパスIDを必要とします。
<path id="catalina-ant-classpath">
<fileset dir="${appserver.lib}">
<include name="catalina-ant.jar"/>
<include name="Tomcat-coyote.jar"/>
<include name="Tomcat-util.jar"/>
</fileset>
<fileset dir="${appserver.home}/bin">
<include name="Tomcat-juli.jar"/>
</fileset>
</path>
ここで、appserver.libはTomcat 7のlibディレクトリへのパスであり、
appserver.home
はTomcatの最上位インストールディレクトリへのパスです。このように、ビルドするすべてのボックスでTomcat 7が必要です。私の個人的な好みは上記の2です。
AntスクリプトがCatalina-Ant JARを確認できるようになったので、使用可能なタスクを通知する必要があります。これらは、Antが利用できるすべてではないにしてもほとんどのタスクです。
<taskdef name="catalina-deploy" classname="org.Apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-list" classname="org.Apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-reload" classname="org.Apache.catalina.ant.ReloadTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-findleaks" classname="org.Apache.catalina.ant.FindLeaksTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-resources" classname="org.Apache.catalina.ant.ResourcesTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-start" classname="org.Apache.catalina.ant.StartTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-stop" classname="org.Apache.catalina.ant.StopTask" classpathref="catalina-ant-classpath"/>
<taskdef name="catalina-undeploy" classname="org.Apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/>
最後に、実際に作業を行う一連のタスクが必要です。上記を見るとわかるように、次のタスクのみを使用する傾向があるいくつかのタスクがあります。
<target name = "stop-webapp">
<catalina-stop url="${Tomcat.manager.url}"
username="${Tomcat.username}"
password="${Tomcat.password}"
path="/${webapp.name}"
failonerror="false"/>
</target>
<target name = "start-webapp">
<catalina-start url="${Tomcat.manager.url}"
username="${Tomcat.username}"
password="${Tomcat.password}"
path="/${webapp.name}"/>
</target>
<target name = "undeploy-webapp">
<catalina-undeploy url="${Tomcat.manager.url}"
username="${Tomcat.username}"
password="${Tomcat.password}"
path="/${webapp.name}"
failonerror="false"/>
</target>
<target name = "deploy-webapp">
<catalina-deploy url="${Tomcat.manager.url}"
username="${Tomcat.username}"
password="${Tomcat.password}"
path="/${webapp.name}"
war="file:${war.file}"/>
</target>
Tomcat.manager.url
は、Tomcatマネージャーが住んでいるURLです。これは、Tomcat 6からTomcat 7への変更のもう1つです。通常、これはhttp://:8080/manager/text
になります。
Tomcat.username
およびTomcat.password
は、Tomcatマネージャーのユーザー名とパスワードです。
webapp.name
は、デプロイするTomcatアプリケーションの名前です。
war.file
は、デプロイするTomcatアプリケーションのWARファイルのパスです。
Tomcat 7では、InstallTaskはDeployTaskに置き換えられています。
次のように宣言を変更します
古い
<taskdef name="install" classname="org.Apache.catalina.ant.InstallTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
と
<taskdef name="install" classname="org.Apache.catalina.ant.DeployTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
あなたの質問にはこれ以上の詳細がないので、あなたはこの変更をしなければならないかもしれないと思います
<fileset dir="${appserver.home}/common/lib">
<include name="servlet*.jar"/>
</fileset>
Build.xmlに上記の設定があると思います。$ {appserver.home}をTomcatインストールが含まれているディレクトリに変更してください。
<fileset dir="C:/Program Files/Apache Software Foundation/Tomcat 5.5/common/lib">
<include name="servlet*.jar"/>
</fileset>
Tomcat 7では、org.Apache.catalina.antには、Managerアプリケーションと対話して、実行中のTomcatのインスタンスからWebアプリケーションをデプロイ、アンデプロイ、リスト、リロード、開始、停止するために使用できる一連のタスクが含まれています。 InstallTaskをDeployTaskに置き換えると、ビルドの問題が解決します。
<taskdef name="install" classname="org.Apache.catalina.ant.DeployTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="reload" classname="org.Apache.catalina.ant.ReloadTask">
<classpath refid="catalina-ant-classpath"/>`enter code here`
</taskdef>
<taskdef name="list" classname="org.Apache.catalina.ant.ListTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="start" classname="org.Apache.catalina.ant.StartTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
<taskdef name="stop" classname="org.Apache.catalina.ant.StopTask">
<classpath refid="catalina-ant-classpath"/>
</taskdef>
Eclipseを使用している場合は、以下の手順に従ってant_homeの場所を変更する必要があります。ウィンドウ> prefrances> Ant>ランタイム>クラスパス> AntHomeに移動し、anthomeボタンをクリックして、anthomeディレクトリパスを指定します。
ur問題を解決するには、anthome/libフォルダー内にcatalina-ant.jarをコピーする必要があります
ありがとう、Sharad