2016-02-05 181 views
0

使用Ant腳本時,我試圖構建要在IIB Server中部署的條形文件。但我面臨這樣的錯誤:如何解決ANT「exec」命令行錯誤消息?

BIP0960E不正確的 「-a」, 「-l」, 「-p」,或 「O」 提供的參數mqsicreatebar

請不要讓我知道如何解決這個錯誤。

謝謝。

我使用以下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.6\lib\antcontrib.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文件。

回答

1

上面的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命令問題。