我该如何通过Ant检索Composer?

8
我正在尝试让我的Ant脚本为我检索Composer。Composer是PHP的依赖管理器。根据文档,需要运行以下命令:"curl -s https://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>
....

任何帮助都非常感激。

2个回答

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脚本中使用。您将其作为curl的参数传递。因此,您需要执行一个shell脚本-可以使用bash-c并将命令作为shell语句传递。

归属。


1
谢谢。最终我使用了Ant的“GET”,它显然也可以实现同样的功能。无论如何,我将其标记为已接受。 - Coreus
这不安全,因为它在执行安装脚本之前没有验证其签名。 - Damien

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 Make,则以下是等效的代码:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接