Почему Phing запускает мой build.xml, а затем говорит, что его не существует?

Он запускает мой build.xml, когда появляется сообщение об отсутствии моего build.xml... Это не имеет смысла.

<project name = "php_project" default = "build" >
    <!-- ============================================ -->
    <!-- Target: prepare -->
    <!-- ============================================ --> 
    <target name = "prepare" >
        <echo msg = "Making directory ./target" />
        <mkdir dir = "./target" />
    </target>
    <!-- ============================================ -->
    <!-- Target: build -->
    <!-- ============================================ -->
    <target name = "build" depends = "prepare" >
        <echo msg = "Copying files to build directory..." />
        <echo msg = "Copying ./src/main/php/lib to ./target/lib directory..." />
        <copy file = "./src/main/php/lib" tofile = "./target/lib" />
        <echo msg = "Copying ./src/main/php/webapp to ./target/webapp directory..." />
        <copy file = "./src/main/php/webapp" tofile = "./target/webapp" />
    </target>
</project>

Как вы можете сказать, я использую файловую структуру PHP-Maven, но PHP-Maven мертв, поэтому я перехожу на Phing. Композитор находится в src/main/php/lib/vendor. Мой build.sh:

#!/bin/sh
./phing build.xml

Выход:

$ ./build.sh
Buildfile: ./build.xml
Override ignored for user property phing.file
Override ignored for user property phing.dir
Adding reference...
  +Task definition: ...
  +User datatype: ...
  +Target: prepare
  +Task: echo
  +Task: mkdir

BUILD FAILED
exception 'BuildException' with message 'Target 'build.xml' does not exist in this project.' in php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Project.php:935
Stack trace:
#0 php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Project.php(867): Project->_tsort('build.xml', Array, Array, Array, Array)
#1 php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Project.php(817): Project->_topoSort('build.xml', Array)
#2 php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Project.php(797): Project->executeTarget('build.xml')
#3 php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Phing.php(574): Project->executeTargets(Array)
#4 php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Phing.php(172): Phing->runBuild()
#5 php_project/src/main/php/lib/vendor/phing/phing/classes/phing/Phing.php(272): Phing::start(Array, NULL)
#6 php_project/src/main/php/lib/vendor/phing/phing/bin/phing.php(43): Phing::fire(Array)
#7 php_project/src/main/php/lib/vendor/phing/phing/bin/phing(20): require_once('php_project/...')
#8 {main}

Total time: 0.0560 seconds

1 ответ

Решение

./phing build.xml

Вы запускаете phing с целью "build.xml". Эта цель не существует. Но phing файла сборки использует по умолчанию, что build.xml, Если вы хотите запустить phing с другим именем файла сборки, вы должны использовать опцию -f или же --buildfile, а затем имя файла, который вы хотите использовать.

Поскольку существующая целевая сборка выполняется по умолчанию, вам вовсе не нужно называть ЛЮБУЮ цель.

./phing сделал бы.

./phing build также будет делать с явным указанием цели для выполнения.

Другие вопросы по тегам