2013-02-07 65 views
7

我想讓我的Ant腳本爲我取回作曲家。 Composer是PHP的依賴管理器。 According to the doc需要運行以下命令:「curl -s https://getcomposer.org/installer | php」,它會將Composer.phar下載到我所在的目錄中。從終端運行時,它的工作方式與預期相同。如何通過Ant檢索Composer?

如何爲此設置Ant構建文件?到目前爲止,我已經得到了這一細分市場的「composerget」的目標,但它不保存文件,只能輸出它在我的命令shell:

....  
<target name="composerget" description="Composer update dependencies"> 
    <exec executable="curl"> 
     <arg line="-s" /> 
      <arg line="https://getcomposer.org/installer"/> 
     <arg line="| php" /> 
    </exec> 
    </target> 
.... 

任何幫助是極大appeciated。

+0

可能重複[Ant運行命令與管道](http://stackoverflow.com/questions/1187402/ant-run-command-with-pipes) – Mez

回答

8
<target name="composerget" description="Composer update dependencies"> 
    <exec executable="/bin/bash"> 
     <arg value="-c" /> 
     <arg value="curl -s https://getcomposer.org/installer | php" /> 
    </exec> 
</target> 

應該這樣做。

管道(|)只能在shell腳本中使用。你將它作爲捲曲的參數傳遞。所以你需要執行一個shell腳本 - 你可以用bash -c來完成,並將命令作爲shell語句傳遞。

Attribution.

+1

謝謝。我最終使用了Ant的「GET」,它顯然也是這樣。 https://ant.apache.org/manual/Tasks/get.html將此標記爲已接受。 – Coreus

+0

這是不安全的,因爲它在執行安裝腳本之前不驗證安裝腳本的簽名。 –

0

這將下載Composer安裝程序,驗證其簽名,並運行安裝程序:

<target name="composer" description="Install composer"> 
     <exec executable="wget"> 
      <arg value="-O" /> 
      <arg value="composer-setup.sig" /> 
      <arg value="https://composer.github.io/installer.sig" /> 
     </exec> 
     <exec executable="wget"> 
      <arg value="-O" /> 
      <arg value="composer-setup.php" /> 
      <arg value="https://getcomposer.org/installer" /> 
     </exec> 
     <exec executable="bash"> 
      <arg value="-c" /> 
      <arg value="awk '{print $$0 &quot; composer-setup.php&quot;}' composer-setup.sig | sha384sum --check" /> 
     </exec> 
     <exec executable="php"> 
      <arg value="composer-setup.php" /> 
     </exec> 
     <exec executable="rm"> 
      <arg value="composer-setup.php" /> 
     </exec> 
     <exec executable="rm"> 
      <arg value="composer-setup.sig" /> 
     </exec> 
     <exec executable="mv"> 
      <arg value="composer.phar" /> 
      <arg value="composer" /> 
     </exec> 
    </target> 

如果您正在使用GNU製作,這是等價的:

all: vendor 

vendor: composer composer.json composer.lock 
     ./composer install 

composer: 
     wget -O composer-setup.sig https://composer.github.io/installer.sig 
     wget -O composer-setup.php https://getcomposer.org/installer 
     awk '{print $$0 " composer-setup.php"}' composer-setup.sig | sha384sum --check 
     php composer-setup.php --quiet 
     rm composer-setup.* 
     mv composer.phar composer