tomcat - 从 ant 脚本启动 tomcat

标签 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 -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 可执行文件从 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/

相关文章:

java - 如何在 grails Controller 中找到我的 servlet 的当前目录位置? (或 java servlet)

jsf - 为什么 firefox 文件下载在 Tomcat 中运行?

linux - 无法将tomcat升级到最新版本

包含美元分隔变量的 Java 属性

jenkins - 如何在 Jenkins 中为某些用户级别阻止某些作业?

hudson - Jenkins CI (Hudson) - 如何启动交互式下游作业?

java - HIkariCP 为每个 webapp 创建连接池

ant - 如何从 Ant 中的批处理文件中获取 %ERRORLEVEL%

java - 如何在 HYBRIS 中只构建特定租户?

jenkins - 限制 jenkins.log 或 hudson.log 的日志大小