我正试图让我的Ant脚本为我检索Composer。Composer是PHP的依赖性管理器。根据文档,需要运行以下命令:"curl-shttps://getcomposer.org/installer|php",它会将Composer.phar下载到我所在的目录中。这在从终端运行时可以正常工作。
如何为此设置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>
....
我们非常感谢任何帮助。
<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语句传递。
归因。
这将下载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 " composer-setup.php"}' 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>
如果您使用的是GNUMake,这相当于:
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