Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ant脚本启动tomcat_Tomcat_Ant_Hudson_Jenkins - Fatal编程技术网

从ant脚本启动tomcat

从ant脚本启动tomcat,tomcat,ant,hudson,jenkins,Tomcat,Ant,Hudson,Jenkins,我正在使用以下ANT脚本运行tomcat: <macrodef name="start-tomcat"> <sequential> <exec executable="/bin/sh" > <arg value="-c" /> <arg value='${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512

我正在使用以下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>
我有两个问题:

  • 如何让ant像上面那样显示输出?ant仅在出现错误时向我显示输出
  • 当我使用ant可执行文件从shell运行build.xml文件时,tomcat会启动。当通过CI服务器运行构建文件时,尤其是Jenkins(Hudson),tomcat不会启动
  • 我发现很难理解如何使用
    任务来运行shell脚本,我有什么做错了吗


    谢谢。

    像这样执行命令怎么样:

    <exec executable="bash" >
                <arg value="-c" />
                <arg value='nohup ${tomcat.bin.dir}/startup.sh -Xms128M -Xmx512M &' />
    </exec>
    

    问题与Jenkins特性有关,该特性名为
    ProcessTreeKiller

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

    我所要做的就是覆盖名为
    buildid
    的jenkins env变量,它就工作了。 我使用了一个函数来设置特定于构建的环境变量

    Here is how you can stop tomcat from Ant script: 
    
    build.properties文件: 加载属性文件
    
    +---------------------------------+
    |T O M C A T S T O P E D|
    +---------------------------------+
    我还将一个名为spawn set的元素添加到了“false”,它将执行输出打印到控制台上。
    希望这有帮助:)
    
    我已找到问题2的原因。显然,当jenkins完成任务时,它会向构建和所有子进程发送一个kill信号,从而
    startup.sh
    在它完成任何任务之前终止。我正在寻找一种方法,使tomcat进程在构建完成后保持不变。与发送一个
    nohup
    信号有关。可能有效,因为我已经找到了一个不同的解决方案,所以没有尝试过,谢谢。@michael好吧,也许你应该回答自己的问题,然后按答案投票?:)
    Here is how you can stop tomcat from Ant script: 
    
     #----------------------------------------------------
     #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
    
     <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 :)