我正在使用 Ant 脚本构建要在 IIB 服务器中部署的 bar 文件。但是我遇到了这样的错误:
BIP0960E 提供给 mqsicreatebar 的不正确的 "-a"、"-l"、"-p" 或 "-o" 参数
请让我知道如何解决此错误。
谢谢。
我正在使用以下 ant 脚本:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Test" default="Create_bar" basedir=".">
<property file="ucd.properties"></property>
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="C:apache-ant-1.9.6libantcontrib.jar"/>
</classpath>
</taskdef>
<!-- Making Windows command environment -->
<target name="mqsiprofile.cmd">
<exec executable="${broker.mqsi.path}mqsiprofile.cmd" />
</target>
// <!-- Creating a bar file -->
<target name="Create_bar">
<for list="${project_name}" delimiter="," param="pName">
<sequential>
<echo message="@{pName}"/>
<exec executable="${toolkit.home}mqsicreatebar.exe" spawn="false" vmlauncher="false" failonerror="true">
// <!-- project's workspace-->
<arg value="-data" />
<arg value="${workspaces.dir}" />
<!--barfile generated path-->
<arg value="-b" />
<arg value="${bar.loc}@{pName}.msgflow.generated.bar" />
<!--project Name-->
<arg value="-p" />
<arg value="@{pName}" />
<!--Message flows for its corresponding projects which has given in cvsCheckout.properties-->
<arg value="-o" />
<arg line="@{bar.loc}${@{pName}.flow_name}" />
<arg line="@{bar.loc}IAM_Demo_Compute.esql" />
<arg value="-deployAsSource" />
</exec>
</sequential>
</for>
</target>
</project>
我放置了构建 bar 文件所需的所有组件。
上面的BIP0960
错误消息表示您已将不正确的参数传递给在脚本中运行的可执行文件。您需要对要传递给可执行文件的参数字符串进行故障排除。
构建语句的方式调试 ANT exec
语句。
调试 ANT 脚本的一个好方法是为命令行参数字符串创建单个属性,然后将这些参数回显到控制台以确认其构造。使用此参数字符串输出查看、测试、修改和重新运行命令及其参数,直到它们正常工作。
为此,请重构 exec
语句,使其引用名为 ${myParams} 的单个参数字符串:
<!-- create the command parameters -->
<property name="myParams" value="-data ${workspaces.dir} -b ${bar.loc}@{pName}.msgflow.generated.bar -p @{pName -o @{bar.loc}${@{pName}.flow_name} @{bar.loc}IAM_Demo_Compute.esql -deployAsSource" />
<!-- echo myParams -->
<echo message="myParams: ${myParams}" />
<!-- pass myParams to the executable -->
<exec executable="${toolkit.home}mqsicreatebar.exe" spawn="false" vmlauncher="false" failonerror="true">
<arg line="${myParams}" />
</exec>
echo
语句将显示展开的属性变量。将其复制并粘贴到命令行,然后重试。当您拥有正确的参数时,将其复制并粘贴回脚本中,将静态值替换为正确的变量。
命令行更改作为一个属性而不是多个arg
值进行管理更容易。
使用此结构,您可以轻松解决任何 exec 命令问题。