запустить кот из муравейника - PullRequest
4 голосов
/ 09 октября 2011

Я использую следующий скрипт 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>

когда я запускаю скрипт запуска 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. Как я могу сказать муравью, чтобы он показывал вывод, как указано выше?Муравей показывает только вывод, когда есть ошибка.
  2. Когда я запускаю файл build.xml из оболочки с исполняемым файлом ant, tomcat запускается.при запуске файла сборки через CI-сервер, в частности, запускается Tomcat Дженкинса (Хадсона).

Мне трудно понять, как использовать задачу <exec> для запуска оболочкисценарии, есть что-то, что я делаю не так?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 09 октября 2011

Проблема была связана с функцией Jenkins под названием ProcessTreeKiller, описанной здесь .

В основном Jenkins автоматически убивает все процессы, порожденные заданием, путем поиска в дереве процессов для процессов с определенной средойпеременная

Все, что мне нужно было сделать, это переписать переменную jenkins env с именем BUILD ID, и она сработала.Я использовал Setenv Plugin , чтобы установить env var, специфичный для сборки.

1 голос
/ 28 мая 2012
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 :) 
1 голос
/ 09 октября 2011

Как насчет выполнения команды следующим образом:

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