Я застрял с глупой проблемой. Проблема:
Мне нужно запустить собственный самодельный сервер. Этот сервер запущен с использованием файла .bat (я работаю в ОС Windows).
Я написал Ant target:
<exec /> start-stupid-server.bat
<waitfor />
порт сервера.
Итак, файл bat запущен, сервер прослушивает порт. Муравей пишет BUILD SUCCESSFUL и не выходит.
Муравей ждет, пока окно сервера не закроется.
Я перепробовал 100 500 способов преодолеть это, но мне это не удалось.
Есть ли в Ant путь к файлу <exec />
bat и забыть об этом?
<exec spawn="true" />
не помогает, потому что Ant закрывает окно сервера и сервер выключается.
Я пробовал <exec />
с:
start start-stupid-server.bat,
start /b start-stupid-server.bat
Ничего не помогает :( Ant все еще ждет, пока окно сервера не закроется.
Вот моя цель:
<target name="start_proprietary_server" depends="bootstrap">
<echo message="going to stop MDM server instance... "/>
<forget daemon="true">
<exec executable="${app.custom.root}/bin/stopAll.bat" dir="${app.custom.root}/bin" />
</forget>
<waitfor
maxwait="20" maxwaitunit="second"
checkevery="1" checkeveryunit="second" timeoutproperty="mdm.stop.error">
<and>
<not> <socket server="localhost" port="12000" /> </not>
<not> <socket server="localhost" port="14444" /> </not>
</and>
</waitfor>
<if>
<isset property="mdm.stop.error" />
<then>
<echo message="There are some problems while stopping MDM server. See what's went wrong" />
</then>
<else>
<echo message="MDM server successfully stoped." />
</else>
</if>
<echo message="going to start MDM server instance... "/>
<!--
Starts but doesn't exit target
<exec executable="cmd" dir="${app.custom.root}/bin" >
<arg value="/c start startAll.bat" />
</exec>
-->
<!--
<forget daemon="true">
<exec executable="cmd" dir="" >
<arg value="/c startAll.bat" />
</exec>
</forget>
-->
<forget daemon="true">
<exec executable="${app.custom.root}/bin/startAll.bat" dir="${app.custom.root}/bin" />
</forget>
<echo message="Wating for localhost ports #12000 and #14444"/>
<waitfor
maxwait="40" maxwaitunit="second"
checkevery="3" checkeveryunit="second" timeoutproperty="mdm.start.error">
<and>
<socket server="localhost" port="12000" />
<socket server="localhost" port="14444" />
</and>
</waitfor>
<if>
<isset property="mdm.start.error" />
<then>
<echo message="There are some problems while starting MDM server. See what's went wrong" />
</then>
<else>
<echo message="MDM server has been started." />
</else>
</if>
</target>
Вот файл летучей мыши:
call .\bcmenv.bat
start /min .\startLocator.bat
sleep 5
start /min .\startServices.bat
exit
Я пытался выполнить его, используя тег forget
, используя start
, start /b
и call
, но ничего не помогает. Ant не завершает задачу, пока окно сервера не закроется.
Если я использую spawn без forget
, Ant закрывает окно сервера при выходе из цели. Он использует spawn в сочетании с забудьте, цель Ant не завершена, пока окно сервера не закроется.
Что я могу попробовать дальше?