如何在Mac OS X上使用Ant复制.app包?

3

大家好,我有一个关于在Mac OS X上使用ant复制文件的问题。我的iPhone开发中有一个很棒的构建脚本,它可以复制从xcodebuild创建的编译后的.app文件。但是,ant命令似乎无法正常工作,它不能正确地复制.app文件,而是将其内容复制为文件夹。我知道这是因为它没有保留复制所需的元数据,以保持文件夹为.app。我可以使用ditto进行复制,但我想知道是否有什么我在ant命令中忽略了。所以,这就是我的问题总结:如何在Mac OS X上使用ant复制.app捆绑包?任何提示都将不胜感激。

3个回答

1

Ant(或bash,或任何你使用的工具)不知道应该将应用程序包视为文件来处理,它只将其视为目录(因为它确实是一个目录)。因此,为了使你的Ant文件正常工作,你需要使用适用于复制文件夹而非文件的命令。我从未使用过Ant,但它可能类似于cp Unix命令(cp -r origApp.app newApp.app)。

希望这可以帮到你...


我明白了。我只是想知道是否有任何Ant专家能告诉我关于ant <copy>命令的任何隐藏选项。不过还是谢谢你的帮助,Fabian。 - Sam Stewart
啊,抱歉:( 我以前从未使用过Ant...你可以在这里看一下,我看到了关于复制目录的一些东西...http://ant.apache.org/manual/CoreTasks/copy.html - micmoo
我非常感谢你的帮助,但我已经尝试了所有的方法。我甚至在使用<copy todir="">时使用了整个文件集。一定有一个选项可以保留资源 fork,但是我似乎找不到它。 - Sam Stewart

1

Ant的复制任务定义似乎没有任何处理资源叉的OS X特定代码。如果不使用exec任务中的ditto,您可以尝试使用路径名后缀"/..namedfork/rsrc"显式地复制资源叉。我不知道这是否适用于所有版本(Jaguar、Tiger、Leopard等)。


0

在 Ant 中,这是我使用的:

<delete dir="${dmgdir}/${App.Out.FileName}"/>
<mkdir dir="${dmgdir}/${App.Out.FileName}"/>  
<echo>Copy ${App.Out.FileName} from ${publishdir} to ${dmgdir}</echo>
  
<exec executable="cp">
    <arg value="-a"/>
    <arg value="${publishdir}/${App.Out.FileName}/"/>
    <arg value="${dmgsourcedir}/${App.Out.FileName}/"/>
</exec>

删除目标应用程序文件夹

创建dir应用程序文件夹

然后使用带有斜杠结尾的路径进行cp -a操作


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接