After working for years with Tomcat 6, I just thought to upgrade to Tomcat 7 and voila... My ANT scripts are not working anymore.... After googling for few hours found some interesting facts about new things in Tomcat 7.
Step 1:
To start with, Tomcat7 manager app is not configured by default. Make sure
For example:
Step 1:
To start with, Tomcat7 manager app is not configured by default. Make sure
you make below changes in your TOMCAT_HOME/conf/tomcat-users.xml. For example:
<tomcat-users>
<role rolename="tomcat"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="role1"/>
<user username="tomcat" password="tomcat" roles="tomcat"/>
<user username="tomcat" password="s3cret" roles="manager-gui,manager-script"/>
<user username="both" password="tomcat" roles="tomcat,role1"/>
<user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>
Step 2:
Step 2:
Catalina-Ant for Tomcat 6 was encapsulated within a single JAR file.
Catalina-Ant for Tomcat 7 requires four JAR files. One from TOMCAT_HOME/bin:
tomcat-juli.jar
and three from TOMCAT_HOME/lib:
catalina-ant.jar
tomcat-coyote.jar
tomcat-util.jar
So here goes the modified ANT script:
build.properties file
# Ant properties for building the sampleapp
appserver.home=C:/root/dev/apache-tomcat-7.0.33
# for Tomcat 5 use $appserver.home}/server/lib
# for Tomcat 6 use $appserver.home}/lib
# for Tomcat 7 use $appserver.home}/lib
appserver.lib=${appserver.home}/lib
deploy.path=${appserver.home}/webapps
tomcat.manager.url=http://localhost:8080/manager
tomcat.manager.username=tomcat
tomcat.manager.password=s3cret
part of ANT Script file
<!--- Updated for Tomcat 7, for Tomcat 6 only catalina-ant.jar is needed -->
<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>
<!-- Configure the custom Ant tasks for the Manager application -->
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" classpathref="catalina-ant-classpath"/>
<taskdef name="list" classname="org.apache.catalina.ant.ListTask" classpathref="catalina-ant-classpath"/>
<taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask" classpathref="catalina-ant-classpath"/>
<taskdef name="findleaks" classname="org.apache.catalina.ant.FindLeaksTask" classpathref="catalina-ant-classpath"/>
<taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask" classpathref="catalina-ant-classpath"/>
<taskdef name="start" classname="org.apache.catalina.ant.StartTask" classpathref="catalina-ant-classpath"/>
<taskdef name="stop" classname="org.apache.catalina.ant.StopTask" classpathref="catalina-ant-classpath"/>
<taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" classpathref="catalina-ant-classpath"/>
<!-- Executable Targets -->
<target name="deploy" description="Deploy application in Tomcat7">
<deploy url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"
war="${name}"/>
</target>
<target name="list" description="List Tomcat applications">
<list url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"/>
</target>
<target name="reload" description="Reload application in Tomcat">
<reload url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>
<target name="findleaks" description="Find leaks in Tomcat applications">
<findleaks url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"/>
</target>
<target name="resources" description="List resources in Tomcat applications">
<resources url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"/>
</target>
<target name="start" description="Start Tomcat application">
<start url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"/>
</target>
<target name="stop" description="Stop Tomcat application">
<stop url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"
failonerror="false"/>
</target>
<!--The stop task has the failonerror attribute set to false as on most occasions you don’t want the Ant build to stop if a Tomcat application you’re trying to stop isn’t running. -->
<target name="undeploy" description="Stop Tomcat application">
<undeploy url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"
failonerror="false"/>
</target>
<!-- End Tomcat tasks -->
Note :- few target task like 'install' have been deprecated in Tomcat7.
