2015-04-10 2 views
0

Я пытаюсь запустить команду копирования в XML-файле Ant build для создания стороннего программного обеспечения из источника. Я пробовал эту команду множеством способов с различными результатами.Ant build XML не копирует .so файлы

Покушение 1 (из коробки):

<copy file="${result.grep_out}" tofile="${build.libpcap.so}" /> 

Это не может со следующей ошибкой:

BUILD FAILED 
/home/pi/myDir/build.xml:612: Use a resource collection to copy directories. 

Так что, похоже, как файлы ".so" (который копируемая в этом случае) считается специальным файлом и поэтому не может рассматриваться как обычный файл.

Попытка 2:

<copy todir="${build.libpcap.so}"> 
    <fileset dir="${result.grep_out}" /> 
</copy> 

Это не вызывает к выпадению сборки на этой линии, но это не вызывает проблем, позже как .so файл копируется принял форму директории, не файл вообще, и поэтому был бесполезен.

Покушение 3:

Изменение его:

<copy tofile="${build.libpcap.so}"> 
    <fileset dir="${result.grep_out}" /> 
</copy> 

Поддавшись следующее сообщение об ошибке

BUILD FAILED 
/home/pi/myDir/build.xml:612: Cannot concatenate multiple files into a single file. 

Это имеет смысл, так как я уже говорил это, чтобы скопировать то, что я сказал был файлом в файл.

Покушение 4

И наконец

<copy file="${result.grep_out}" todir="${build.libpcap.so}" /> 

завершается с первой ошибки снова.

BUILD FAILED 
/home/pi/myDir/build.xml:612: Use a resource collection to copy directories. 

Я пытаюсь сделать это на процессоре ARM, а код строится является jNetPcap, если это имеет значение.

Спасибо!

UPDATE:

Предшествующий код, мне кажется, содержит некоторые подсказки по этому поводу.

<exec executable="locate" outproperty="result.locate_out" > 
    <arg value="libpcap.so"/> 
</exec> 

<exec executable="grep" inputstring="${result.locate_out}" outputproperty="result.grep_out"> 
    <arg value="libpcap.so$" /> 
</exec> 

<!-- then the copy code i mentioned earlier. --> 

Распечатывая выход показывает мне, что первый «найти» команда не имеет выхода, который, кажется, вызывает проблему. «locate», при запуске вручную из моей командной строки, также не имеет выхода, хотя libpcap.so существует на моем компьютере. Поэтому некоторые проблемы с этой командой или то, как я запускаю ее, похоже, вызывают проблему.

+1

Что такое значение' result.grep_out'? Я подозреваю, что ты получая несколько файлов там, а не один. Так вы ожидаете. – Brian

+0

Ах, он был пуст. Трассировка обратно через файл сборки, я думаю, я нашел причину этого ... обновление моего вопроса. – exxodus7

ответ

0

Понял это! @Brian помог мне понять, что $ {result.grep_out} фактически пуст, поскольку предыдущая команда не удалась.

Команда «locate», от которой зависело (как видно в вопросе), ничего не возвращала, поскольку updateb не выполнялся с момента установки «.так что»файл, он искал.

Просто используя оригинальный синтаксис копирования и запуска„updatedb“в командной строке сделал трюк!

Смежные вопросы