Я хочу использовать Propel с Gradle и получил этот сбой при выполнении:
В строке 104 Filesystem.php:
Не удалось создать «www \ propel \ model» \ Base «: mkdir (): файл существует.
Прежде чем использовать gradle, я создал пакет (init-propel.bat), который прекрасно работает:
REM build propel
call www\vendor\bin\propel sql:build --output-dir="www\propel\sql"call www\vendor\bin\propel model:build --output-dir="www\propel\model"call www\vendor\bin\propel config:convert --output-dir="www\propel"
pause
Моя структура файловой системы такая:
www\vendor\bin\propel // propel filled by composer
www\propel // for all outputs
build.gradle
init-propel.bat
schema.xml
А теперь мой неработающий скрипт gradle:
task propel() {
}
task propel_sql(type: Exec) {
commandLine 'cmd', '/c', 'www\\vendor\\bin\\propel sql:build --output-dir="www\\propel\\sql""'
}
task propel_model_clean(type: Delete) {
delete 'www\\propel\\model\\Base', 'www\\propel\\model\\Map'
}
task propel_model(type: Exec, dependsOn: propel_model_clean) {
commandLine 'cmd', '/c', 'www\\vendor\\bin\\propel model:build --output-dir="www\\propel\\model""'
}
task propel_config(type: Exec) {
commandLine 'cmd', '/c', 'www\\vendor\\bin\\propel config:convert --output-dir="www\\propel"'
}
propel.finalizedBy propel_sql
propel.finalizedBy propel_model
propel.finalizedBy propel_config
При запуске задачи Propel Gradle генерируется папка Base и Map с первым классом внутри, но при переходе ко второму классу он разрывается с «Файл существует». исключение. Меня интересует, что это прекрасно работает, вызывая пакет из проводника или из Gradle:
task propel(type: Exec) {
commandLine 'cmd', '/c', 'init-propel.bat'
}
В конце концов решение было простым:
www\\vendor\\bin\\propel model:build --output-dir="www\\propel\\model""'
Нужно было только удалить одну из двойных кавычек в конце.
Других решений пока нет …