Ant构建XML而不是复制.so文件

时间:2015-04-10 16:39:26

标签: java xml ant arm

我正在尝试在Ant构建XML文件中运行复制命令,以便从源代码构建一些第三方软件。我已经尝试了很多方法以及不同的结果。

尝试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文件采用dir的形式,而不是文件的形式,因此无法使用。

尝试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.

这是有道理的,因为我告诉它将我说的dir复制到文件中。

尝试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,如果这很重要。

谢谢!

更新:

我认为上述代码对此有一些线索。

<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”命令没有输出,这似乎导致了问题。 “locate”,当从我的命令行手动运行时,虽然我的计算机上存在libpcap.so,但也没有输出。所以这个命令的一些问题或我如何运行它似乎导致了这个问题。

1 个答案:

答案 0 :(得分:0)

想出来! @Brian帮助我看到$ {result.grep_out}实际上是空的,因为之前的命令失败了。

&#34;找到&#34;由于安装了&#34; .so&#34;它正在寻找文件。

只需使用原始复制语法并运行&#34; updatedb&#34;在命令行上做了伎俩!