我正在使用以下 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
我有两个问题:
- 如何让 ant 向我显示如上所示的输出? ant 只在出现错误时向我显示输出。
- 当我使用 ant 可执行文件从 shell 运行 build.xml 文件时,tomcat 确实启动了。通过 CI 服务器运行构建文件时 - 特别是 Jenkins (Hudson) tomcat 不会启动。
我发现很难理解如何使用 <exec>
运行 shell 脚本的任务,我做错了什么吗?
谢谢。
最佳答案
该问题与名为 ProcessTreeKiller
的 Jenkins 功能有关 here .
基本上,Jenkins 通过在进程树中搜索具有特定环境变量的进程来自动杀死作业产生的所有进程
我所要做的就是覆盖名为 BUILD ID
的 jenkins env 变量并且它起作用了。
我用了 Setenv Plugin设置特定于构建的环境变量。
关于tomcat - 从 ant 脚本启动 tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703156/