我有一个构建脚本可以执行许多操作(最小化JavaScript,上传到amazon s3等)。最小化ANT任务只对我修改的javascript进行操作,并忽略其余部分(我没有写这个脚本)。我想为amazon s3任务做类似的事情,只有更新的内容在任务中上传。如何做到这一点的任何线索将不胜感激。如何仅对已修改的文件执行ANT任务
15
A
回答
0
一般而言,您可以对使用File Mappers的源文件和目标文件的任务执行此操作,以便该任务仅应用于已更改的源文件。我不知道是否有办法做到Ant无法看到目标文件,如上传。
0
如果您不想更改/重写S3任务并希望纯粹保留在XML中,则可以使用Uptodate Task和阴影目录来模拟此行为 - 例如,保留您的上传副本(可能很大)或者只是一个空白文件,上次上传时间为创建日期。手册页上的示例应该提供许多提示。
当然你也可以编写自己的S2Uptodate任务,连接到S3来比较日期。首选的解决方案取决于有多少文件(例如,几个巨大的文件,你可以在不同的操作中检查每一个文件或接近无限数量的小文件,你会采取不同的处理方式)
你也可能受到Xjc task的使用和元素的启发,虽然这当然是纯粹在本地文件上运行的
8
您可以选择带有修改日期标记的文件集,修改后的标记非常强大,请检查一下:Ant Selectors - Modified。
为了让它知道发生了什么变化,它可以在一个属性文件中保留一个缓存,每次成功构建后都会更新,除非你使用delayupdate属性 - 所以也许来测试它,你可以有:
<param name="commitUpdate" value="false" />
[...]
<ftp ...>
<fileset dir="src">
<modified delayupdate="${commitUpdate}" />
</fileset>
</ftp>
当然,你可以通过命令行PARAM什么设置commitUpdate。
1
您可能需要考虑由Ant-contrib库提供的OutOfDate Ant任务。它允许您为文件集中的每个源文件设置执行顺序/并行任务。您可以应用文件映射器来定义目标文件以测试源文件,以便只有已修改的文件运行特定的顺序/并行任务。
看看这个SO螺纹:
How to execute an Ant task only when source files have been modified?
相关问题
- 1. 仅针对修改后的文件运行Ant exec任务
- 2. 如何仅在文件更改时执行Ant任务?
- 3. 使用VSSGET ant任务获取仅修改的文件
- 4. 在exec任务中执行ant文件
- 5. Ant任务仅FTP指定文件
- 6. 只对已修改的文件执行jar命令
- 7. 使用ant任务修改mqfte中可能的文件内容?
- 8. 如何在指定文件夹中的文件上执行ant任务?
- 9. ANT战争任务 - 如何战争只有新的/修改的文件
- 10. Ant任务得到最后修改文件时间
- 11. 如何为给定文件中的每一行执行一个ant任务?
- 12. Jacoco:无法读取执行的数据文件,Ant任务
- 13. 从Ant任务中获取对修改列表的引用
- 14. 如何修改复制任务的执行属性?
- 15. 修改执行Jar文件
- 16. 仅当文件存在时Ant任务才能运行Ant目标?
- 17. Android的 - 无法执行的任务:任务已经执行
- 18. ifstream和ofstream:如何对文件执行多重修改?
- 19. Mercurial如何对文件进行修改?
- 20. Gruntjs:如何使复制任务仅复制手表上的已更改文件
- 21. 使用ANT我想复制已修改和未修改的文件
- 22. 如何修改基于文件更改的grunt watch任务?
- 23. Jenkins没有执行Ant任务
- 24. 使用Maven执行Ant任务
- 25. 保存在IDEA中执行Ant任务
- 26. 执行Ant任务时出现问题
- 27. Tomcat ant任务执行错误
- 28. 如何对文本执行语音以执行任务?
- 29. 如何使用ANT修改jar文件中的文件?
- 30. 如何避免在未更改的源文件上运行ant任务?
如果我在构建脚本中使用的URL资产将这项工作? – Akeem 2009-01-31 18:02:21
可能不是 - 我怀疑Ant会看到一个远程目的地,但我没有尝试过。 – 2009-01-31 19:31:37