我有一个使用'copy' task执行复制操作的Ant脚本。它是为Windows编写的,并且具有硬编码的C:\路径作为'todir'参数。我看到'执行'任务有一个操作系统的参数,有没有类似的方式来分支基于操作系统的副本?我可以使Ant副本任务操作系统特定?
19
A
回答
31
我会建议把路径放在属性中,然后根据当前操作系统有条件地设置属性。
<condition property="foo.path" value="C:\Foo\Dir">
<os family="windows"/>
</condition>
<condition property="foo.path" value="/home/foo/dir">
<os family="unix"/>
</condition>
<fail unless="foo.path">No foo.path set for this OS!</fail>
作为一个好处,一旦它在属性中,您可以在不编辑Ant脚本的情况下覆盖它。
1
你不能使用一个变量并根据类型进行赋值吗?你可以把它放在一个build.properties
文件中。或者您可以使用condition进行分配。
2
你可以使用条件的任务转移到不同的副本任务......从蚂蚁手册:
<condition property="isMacOsButNotMacOsX">
<and>
<os family="mac"/>
<not>
<os family="unix"/>
</not>
</and>
1
声明一个变量,它是你的操作的根文件夹。用该变量前缀文件夹,包括复制任务。
使用条件设置基于OS的变量,或将其作为参数传递给Ant脚本。
6
之前发布的操作系统特定变量的建议可行,但很多时候您可以简单地省略“C:”前缀并使用正斜杠(Unix样式)文件路径,它可以在Windows和Unix系统上运行。
所以,如果你想将文件复制到“C:/ tmp目录”在Windows和“/ tmp目录”在Unix上,你可以使用类似:
<copy todir="/tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
如果你想/需要设置
<condition property="root.drive" value="C:/" else="/">
<os family="windows" />
</condition>
<copy todir="${root.drive}tmp" overwrite="true" >
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
</copy>
0
蚁的contrib具有< osfamily/>任务:基于OS条件的路径,它可以作为被简化。这会将操作系统的系列公开给一个属性(您指定的名称)。这可能有一些好处。
相关问题
- 1. 使用Qt时,我是否必须在特定的操作系统上编译特定的操作系统?
- 2. 在Ant副本任务中扩展*
- 3. Java操作系统的Gradle任务
- 4. 我可以将本机操作系统安装作为虚拟机操作系统运行吗?
- 5. 焦油提取到工作副本操作系统
- 6. 任何人都可以解释这个输出(操作系统)?
- 7. 我可以在任何系统上使用GPU作为GPGPU
- 8. Bada操作系统中的预定任务
- 9. 您可以从自定义Ant任务中执行Ant任务吗?
- 10. jQuery - 检测操作系统和操作系统版本
- 11. 防止操作系统文件的多个副本X
- 12. Blackberry操作系统版本
- 13. 操作系统VBS脚本
- 14. 针对Perl测试脚本的操作系统特定测试
- 15. 如何获取Ruby上的特定操作系统版本?
- 16. 预定义为iPhone操作系统和Mac操作系统
- 17. 我应该学习操作系统特定语言还是Java?
- 18. 如何从Lua脚本中确定系统的操作系统?
- 19. 是否可以制作使用VB.NET的操作系统?
- 20. 可以升级设备的android最新操作系统版本
- 21. 使用apache-ant向IIS运行操作系统命令配置
- 22. 确定Azure云服务的客户操作系统版本
- 23. “”上的iPhone操作系统版本与任何支持开发的iPhone操作系统版本都不匹配,此副本的Xcode
- 24. 我们可以从sqlite3执行操作系统命令吗
- 25. 我在哪里可以下载诺基亚操作系统?
- 26. 我可以双启动两个iPhone操作系统吗?
- 27. 操作系统
- 28. 我意识到操作系统特定的浏览器测试是必要的,但特定操作系统的版本呢?
- 29. npm package.json操作系统特定的依赖关系
- 30. 如何与任何操作系统
没有办法在Ant中声明一个在Windows和Linux下一视同仁的路径吗?我只是好奇。 – 2009-06-23 22:03:32