[英]Ant script: Have <exec> tag dump out entire command line
I have an ant build script with a fairly complex <exec>
command with lots of <arg>
tags that I'm trying to troubleshoot.我有一个 ant 构建脚本,其中包含一个相当复杂的
<exec>
命令,其中包含许多我正在尝试排除故障的<arg>
标签。 I was wondering if it is possible to view the entire command line after ant has constructed it;我想知道是否可以在 ant 构建后查看整个命令行; either in the eclipse debugger or maybe by dumping it to a file.
无论是在 eclipse 调试器中,还是通过将其转储到文件中。
Here's what I'm dealing with:这是我正在处理的:
<exec executable='"@{sdk}/bin/mxmlc.exe"' failonerror="true" >
<arg line='-load-config "@{sdk}/frameworks/flex-config.xml"'/>
<!-- Flex Build Path -->
<!-- Source path -->
<!-- Main source folder: -->
<arg line='-compiler.source-path "@{project-dir}/src"'/>
<!-- Additional source folders outside of the main source folder: -->
<arg line='-compiler.source-path "@{project-dir}/inc/swf"'/>
<arg line='-compiler.source-path "@{project-dir}/inc/images"'/>
<!-- Output folder: -->
<arg line='-output "@{output}"'/>
<!-- Library path -->
<!-- Build path libraries: -->
<arg line='-compiler.library-path "@{libs}"'/>
<arg line='-compiler.library-path "@{sdk}/frameworks/libs"'/>
<arg line='-compiler.library-path "@{sdk}/frameworks/locale/en_US"'/>
<arg line='-compiler.library-path "${dcradswcs.flex.path}/libs"'/>
<arg line='-compiler.library-path "${dcradswcs.flex.path}/locale"'/>
<arg line='-compiler.library-path "${fiberswcs.flex.path}/libs"'/>
<arg line='-compiler.library-path "${fiberswcs.flex.path}/locale"'/>
<arg line='-compiler.library-path "${flexunitframework.flex.path}/flexunitframework/libs/version4libs/Common"'/>
<arg line='-compiler.library-path "${flexunitframework.flex.path}/flexunitframework/libs/version4libs/FlexProject"'/>
<arg line='-compiler.library-path "${flexunitframework.flex.path}/flexunitframework/locale/version4locale"'/>
<arg line='-compiler.library-path "${flexunitframework.flex.path}/flexunitframework/libs"'/>
<!-- <arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.dcrad_4.0.1.277662/dcradSwcs/4.0/libs"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.dcrad_4.0.1.277662/dcradSwcs/4.0/locale"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.dcrad_4.0.1.277662/fiberSwcs/4.0/libs"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.dcrad_4.0.1.277662/fiberSwcs/4.0/locale"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.flexunit_4.0.1.277662/flexunitframework/libs/version4libs/Common"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.flexunit_4.0.1.277662/flexunitframework/libs/version4libs/FlexProject"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.flexunit_4.0.1.277662/flexunitframework/locale/version4locale"'/>
<arg line='-compiler.library-path "C:/rms-it-apps/adobe/fb4/plugins/com.adobe.flexbuilder.flexunit_4.0.1.277662/flexunitframework/libs"'/> -->
<!-- Runtime shared libraries. Order matters. -->
<!-- Load framework libraries first -->
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/textLayout.swc","textLayout_1.1.0.604.swz",,"textLayout_1.1.0.604.swf"'/>
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/osmf.swc","osmf_flex.4.0.0.13495.swz",,"osmf_flex.4.0.0.13495.swf"'/>
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/framework.swc","framework_4.1.0.16076.swz",,"framework_4.1.0.16076.swf"'/>
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/spark.swc","spark_4.1.0.16076.swz",,"spark_4.1.0.16076.swf"'/>
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/sparkskins.swc","sparkskins_4.1.0.16076.swz",,"sparkskins_4.1.0.16076.swf"'/>
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/rpc.swc","rpc_4.1.0.16076.swz",,"rpc_4.1.0.16076.swf"'/>
<arg line='-runtime-shared-library-path="@{sdk}/frameworks/libs/datavisualization.swc","datavisualization_4.1.0.16076.swz",,"datavisualization_4.1.0.16076.swf"'/>
<!-- Load after framework libraries -->
<!-- Note: do not put spaces between comma delimited values -->
<arg line='${rsl.applicationSettings}'/>
<arg line='${rsl.authorization}'/>
<arg line='${rsl.autofill}'/>
<arg line='${rsl.customComponents}'/>
<arg line='${rsl.navigation}'/>
<arg line='${rsl.lookup}'/>
<!-- Libraries needed for QTP -->
<arg line="${qtp.arg1}"/>
<arg line="${qtp.arg2}"/>
<arg line="${qtp.arg3}"/>
<arg line="${qtp.arg4}"/>
<arg line="${qtp.arg5}"/>
<arg line="-verify-digests=false"/>
<!-- Flex Compiler -->
<!-- Compiler options -->
<arg line="-compiler.accessible=true"/>
<arg line="-compiler.strict=true"/>
<arg line="-warnings=true" />
<!-- Additional compiler arguments: -->
<arg line='-theme=@{sdk}/frameworks/themes/Halo/halo.swc -services "@{services-config}" -locale en_US'/>
<!-- Flex Server -->
<!-- Server location -->
<!-- Context root: -->
<arg line="-compiler.context-root=@{context-root}"/>
<!-- Miscellaneous -->
<arg line="-compiler.incremental=true"/>
<arg line="-compiler.keep-generated-actionscript=false"/>
<arg line="-compiler.verbose-stacktraces=true"/>
<arg line="-show-unused-type-selector-warnings=false"/>
<arg line="-optimize=true" />
<arg line="-debug=@{debug}" />
<arg line='"@{mxml}"'/>
</exec>
This is the error I'm getting:这是我得到的错误:
BUILD FAILED
C:\dev\workspace\rmsitepi2\build.raytheon.suite.tomcat.xml:50: The following error occurred while executing this line:
C:\dev\workspace\rmsitepi2\build.raytheon.flex.xml:33: The following error occurred while executing this line:
C:\dev\workspace\rmsitepi2\build.raytheon.flex.xml:159: exec returned: 1
ant -v 通常可以解决问题,但您可能会发现有很多输出需要查看。
What about some good old echoing via:一些好的旧回声怎么样:
<echoxml>
<exec executable="..." failonerror="true" >
<arg value="..."/>
<arg value="..."/>
...
</exec>
</echoxml>
for testing your stuff (attribute values, properties resolved .. etc.) before activating the real thing !?在激活真实的东西之前测试你的东西(属性值,属性解析......等)!?
That's what I use frequently, because ant -verbose | debug
这就是我经常使用的,因为
ant -verbose | debug
ant -verbose | debug
is too chatty when I need to check only specific parts.当我只需要检查特定部分时,
ant -verbose | debug
就太啰嗦了。 Afterwards simply delete or comment the echoxml
tags.之后只需删除或注释
echoxml
标签。
Try using the log4j ANT listener .尝试使用log4j ANT 侦听器。 It can be configured to zero in on the Exec task output.
它可以配置为在 Exec 任务输出中归零。
$ tree
.
|-- build.xml
`-- lib
|-- log4j-1.2.16.jar
`-- log4j.properties
1 directory, 3 files
<project name="name" default="run">
<target name="run">
<exec executable="echo">
<arg line="hello world"/>
</exec>
</target>
</project>
log4j.rootLogger=ERROR, LogFile
log4j.logger.org.apache.tools.ant.taskdefs.ExecTask=DEBUG
log4j.appender.LogFile=org.apache.log4j.FileAppender
log4j.appender.LogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.LogFile.layout.ConversionPattern=[%6r] %8c{1} : %m%n
log4j.appender.LogFile.file=build.log
Need to specify the listener and the directory containing the log4j dependencies:需要指定监听器和包含log4j依赖的目录:
ant -listener org.apache.tools.ant.listener.Log4jListener -lib lib
Producing the following output in the build.log file在build.log文件中生成以下输出
$ cat build.log
[ 0] ExecTask : Current OS is Linux
[ 14] ExecTask : Executing 'echo' with arguments:
'hello'
'world'
The ' characters around the executable and arguments are
not part of the command.
[ 20] ExecTask : hello world
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.