运行 ANT 脚本中的 raml2html
Running raml2html inside an ANT script
我在一个文件夹中有一些 RAML 文件,我正在设置一个 ANT 脚本以使用 raml2html package featured on the raml.org 站点将它们 "build" 到 HTML 文档中。
我是 ANT 的新手,所以我可能没有最有效地使用它,但这是次要问题。我使用两个目标来实现这个目标,它们看起来像这样(我省略了 clean 和 init):
<!-- Look for the RAML, send them one at a time to post-build -->
<target name="build" depends="clean, init">
<echo message="searching for raml source in ${src}"/>
<foreach param="file" target="post-build">
<fileset dir="${src}">
<include name="**/*.raml"/>
</fileset>
</foreach>
</target>
<!-- Run raml2html on each of them, saving output in build/ -->
<target name="post-build" depends="">
<echo>file: ${file}</echo>
<substring text="${file}" parent-dir="${src}/" property="filename" />
<echo>filename: ${filename}</echo>
<echo>build-to: ${build}/${filename}</echo>
<exec executable="raml2html" failonerror="true">
<arg value="-i ${file}" />
<arg value="-o ${build}/${filename}" />
</exec>
</target>
当我 运行 ANT 脚本时:$ant build
,那两个目标 return 这个:
build:
[echo] searching for raml source in /home/ryan/workspace/RAMLValidator/src
[foreach] The nested fileset element is deprectated, use a nested path instead
post-build:
[echo] file: /home/ryan/workspace/RAMLValidator/src/sample.raml
[echo] filename: sample.html
[echo] build-to: /home/ryan/workspace/RAMLValidator/build/sample.html
[exec] 2.0.2
似乎我提供给 <exec>
的参数在某个地方被翻译成了 raml2html 的 -V
选项,因为它的版本是 2.0.2 当我 运行 $raml2html -V
来自终端。
当我 运行 从终端显式地执行相同的命令时:$raml2html -i src/sample.raml -o build/sample.html
,它会完全按照预期生成 HTML...我怎么搞砸了?
问题在于 ANT 将选项标志和标志的参数视为单独的实体,每个实体都需要自己的 <arg />
标记才能正常运行。
像这样修改 "post-build" 目标中的 exec
任务解决了问题:
<exec executable="raml2html" failonerror="true">
<arg value="-o" />
<arg value="${build}/${filename}"/>
<arg value="${file}" />
</exec>
希望这能为别人节省我花费的时间的一小部分!
我在一个文件夹中有一些 RAML 文件,我正在设置一个 ANT 脚本以使用 raml2html package featured on the raml.org 站点将它们 "build" 到 HTML 文档中。
我是 ANT 的新手,所以我可能没有最有效地使用它,但这是次要问题。我使用两个目标来实现这个目标,它们看起来像这样(我省略了 clean 和 init):
<!-- Look for the RAML, send them one at a time to post-build -->
<target name="build" depends="clean, init">
<echo message="searching for raml source in ${src}"/>
<foreach param="file" target="post-build">
<fileset dir="${src}">
<include name="**/*.raml"/>
</fileset>
</foreach>
</target>
<!-- Run raml2html on each of them, saving output in build/ -->
<target name="post-build" depends="">
<echo>file: ${file}</echo>
<substring text="${file}" parent-dir="${src}/" property="filename" />
<echo>filename: ${filename}</echo>
<echo>build-to: ${build}/${filename}</echo>
<exec executable="raml2html" failonerror="true">
<arg value="-i ${file}" />
<arg value="-o ${build}/${filename}" />
</exec>
</target>
当我 运行 ANT 脚本时:$ant build
,那两个目标 return 这个:
build:
[echo] searching for raml source in /home/ryan/workspace/RAMLValidator/src
[foreach] The nested fileset element is deprectated, use a nested path instead
post-build:
[echo] file: /home/ryan/workspace/RAMLValidator/src/sample.raml
[echo] filename: sample.html
[echo] build-to: /home/ryan/workspace/RAMLValidator/build/sample.html
[exec] 2.0.2
似乎我提供给 <exec>
的参数在某个地方被翻译成了 raml2html 的 -V
选项,因为它的版本是 2.0.2 当我 运行 $raml2html -V
来自终端。
当我 运行 从终端显式地执行相同的命令时:$raml2html -i src/sample.raml -o build/sample.html
,它会完全按照预期生成 HTML...我怎么搞砸了?
问题在于 ANT 将选项标志和标志的参数视为单独的实体,每个实体都需要自己的 <arg />
标记才能正常运行。
像这样修改 "post-build" 目标中的 exec
任务解决了问题:
<exec executable="raml2html" failonerror="true">
<arg value="-o" />
<arg value="${build}/${filename}"/>
<arg value="${file}" />
</exec>
希望这能为别人节省我花费的时间的一小部分!