Как сохранить исполняемый файл в задаче копирования ant

Я создал пакет Java FX для Mac OS X, используя Ant. Он создает пакет с двумя файлами - 1. MyApplication.app 2. MyApplication.dmg

Я хочу скопировать оба файла в другую папку, поэтому я написал команду в своем build.xml как -

<copy todir="my_new_folder">
   <fileset dir="old_folder\bundles"/>
</copy>

Оба файла успешно скопированы в «my_new_folder». Но при запуске .app из «my_new_folder» мое приложение не запускается, хотя оно запускается из «old_folder» правильно.

При сравнении скопированного приложения я обнаружил, что exec (исполняемый файл Unix) находится в папке MacOS ("Показать содержимое пакета/Содержимое/MacOS"), не сохраняясь, его вид менялся в файле документа.

Как сохранить его вид в Исполняемый файл Unix, поскольку я просто выполняю простую копию каталога.

Спасибо, Нилам Шарма.


person Neelam Sharma    schedule 30.01.2013    source источник


Ответы (1)


Как указано в задаче копирования ant руководстве:

Примечание для Unix. Права доступа к файлам не сохраняются при копировании файлов; вместо этого они получают разрешения UMASK по умолчанию. Это вызвано отсутствием каких-либо средств для запроса или установки прав доступа к файлам в текущих средах выполнения Java. Если вам нужна функция копирования с сохранением разрешений, используйте вместо этого:

<exec executable="cp" ... >

Итак, в вашем случае замените <copy> на:

<exec executable="cp">
    <arg line="-R old_folder/bundles my_new_folder"/>
</exec>

(обратите внимание, что вы должны использовать косую черту, даже если этот скрипт ant используется в Windows).

person trojanfoe    schedule 30.01.2013
comment
Большое спасибо :) Это работает, мы должны закончить тег args как ‹arg line=-R old_folder/bundles my_new_folder/›, иначе все в порядке. - person Neelam Sharma; 31.01.2013
comment
Я обнаружил, что при копировании с помощью команды exec некоторые файлы показывают «Отказано в доступе» для некоторых файлов, как это решить? - person Neelam Sharma; 31.05.2013
comment
отсутствие каких-либо средств для запроса или установки прав доступа к файлам в текущих средах выполнения Java? Я называю это чушью, Java 7 существует дольше. - person Trejkaz; 27.11.2013
comment
@Trejkaz А что, если Ant не работает под Java 7? - person trojanfoe; 27.11.2013
comment
Затем они могли бы вернуться к поведению, которое он демонстрирует в Java 6. Мой комментарий заключался в том, что они говорят, что текущая среда выполнения Javas, как будто это невозможно во всех них. - person Trejkaz; 27.11.2013