从ant脚本启动tomcat



我正在使用以下ANT脚本运行tomcat:

<macrodef name="start-tomcat">
        <sequential>
            <exec executable="/bin/sh" >
                <arg value="-c" />
                <arg value='${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M' />
            </exec>
        </sequential>
</macrodef>

当我从shell运行tomcat启动脚本时,tomcat正常启动,我看到的输出如下:

Using CATALINA_BASE:   /u/app
Using CATALINA_HOME:   /u/app/3rdparty/apache-tomcat-6.0.33
Using CATALINA_TMPDIR: /u/app/temp
Using JRE_HOME:        /usr/java/jre1.6.0_13
Using CLASSPATH:       /u/app/3rdparty/apache-tomcat-6.0.33/bin/bootstrap.jar

我有两个问题:

  1. 我怎样才能告诉ant像上面那样向我显示输出?ant只在出现错误时向我显示输出
  2. 当我使用ant可执行文件tomcat从shell运行build.xml文件时,它确实启动了。当通过CI服务器运行构建文件时,特别是Jenkins(Hudson(tomcat不会启动

我发现很难理解如何使用<exec>任务来运行shell脚本,是不是我做错了什么?

谢谢。

这个问题与这里描述的名为ProcessTreeKiller的Jenkins特性有关。

基本上,Jenkins通过在流程树中搜索具有特定环境变量的流程,自动杀死作业生成的所有流程

我所要做的就是重写名为BUILD ID的jenkins-env变量,它就工作了。我使用了一个Setenv插件来设置特定于构建的env-var。

执行这样的命令怎么样:

<exec executable="bash" >
            <arg value="-c" />
            <arg value='nohup ${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M &' />
</exec>
Here is how you can stop tomcat from Ant script: 

build.properties文件:

 #----------------------------------------------------
 #Tomcat Configuration
 #----------------------------------------------------
 #Back-end Tomcat 
 tomcat.dir=${branch.dir}/../tomcat
 tomcat.bin.dir=${tomcat.dir}/bin
 tomcat.bootstrap.jar=${tomcat.bin.dir}/bootstrap.jar
 tomcat.jvmarg=-Dcatalina.home

loadproperties文件

 <property file="${basedir}/build.properties" />
<!-- Stop tomcat -->
<target name="stop-tomcat" description="Stops back-end tomcat server" depends="prepare">
    <java jar="${tomcat.bootstrap.jar}" fork="true" spawn="false">
        <jvmarg value="${tomcat.jvmarg}=${tomcat.dir}" />
        <arg line="${arg.stop}" />
    </java>
    <echo>+---------------------------------+</echo>
    <echo>|   T O M C A T   S T O P P E D   |</echo>
    <echo>+---------------------------------+</echo>
</target>
Also I have added an element called spawn set to "false", which print execution output onto console. 
Hope this helps :) 

相关内容

  • 没有找到相关文章

最新更新