我正在尝试在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,但也没有输出。所以这个命令的一些问题或我如何运行它似乎导致了这个问题。
答案 0 :(得分:0)
想出来! @Brian帮助我看到$ {result.grep_out}实际上是空的,因为之前的命令失败了。
&#34;找到&#34;由于安装了&#34; .so&#34;它正在寻找文件。
只需使用原始复制语法并运行&#34; updatedb&#34;在命令行上做了伎俩!