我有一个ant脚本来管理构建过程。对于WiX我需要在生成新版本的安装程序时生成一个新的guid。任何人有任何想法如何在ANT做到这一点?任何使用内置任务的答案都是可取的。但如果我必须添加另一个文件,那很好。有什么办法可以在ANT中生成GUID?
14
A
回答
24
我会使用一个scriptdef
task定义简单的JavaScript任务封装了Java的UUID类,像这样:
<scriptdef name="generateguid" language="javascript">
<attribute name="property" />
<![CDATA[
importClass(java.util.UUID);
project.setProperty(attributes.get("property"), UUID.randomUUID());
]]>
</scriptdef>
<generateguid property="guid1" />
<echo message="${guid1}" />
结果:
[echo] 42dada5a-3c5d-4ace-9315-3df416b31084
如果你有一个合理的先进-date Ant安装,这应该开箱即用。
2
如果您正在使用(或想使用)groovy,这将很好地工作。
<project default="main" basedir=".">
<taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy"
classpath="lib/groovy-all-2.1.5.jar" />
<target name="main">
<groovy>
//generate uuid and place it in ants properties map
def myguid1 = UUID.randomUUID()
properties['guid1'] = myguid1
println "uuid " + properties['guid1']
</groovy>
<!--use the uuid from ant -->
<echo message="uuid ${guid1}" />
</target>
</project>
输出
Buildfile: C:\dev\anttest\build.xml
main:
[groovy] uuid d9b4a35e-4a75-454c-9f15-16b4b83bc6d0
[echo] uuid d9b4a35e-4a75-454c-9f15-16b4b83bc6d0
BUILD SUCCESSFUL
使用Groovy 2.1.5和1.8蚂蚁
+0
如果您将groovy-all-x.x.x.jar复制到ant lib目录中,则可以删除groovy taskdef上的类路径。用groovy-all-2.4.6.jar和ant 1.9.4进行测试 –
相关问题
- 1. 有没有什么办法可以自动生成har文件?
- 2. 有没有什么办法可以从Visual Studio生成nmake?
- 3. 有什么办法可以生成级联删除语句吗?
- 4. 有没有什么办法可以生成一个与UUID(GUID)不同的唯一编号?
- 5. 有什么办法可以在java中生成与字母组合的ID吗?
- 6. 有什么办法可以在Spring Tool Suite IDE中自动生成UML图表
- 7. 有没有什么办法可以从类中自动生成对象?
- 8. 有什么办法可以在ANT构建文件中指定引导目标?
- 9. 有什么办法可以将javadoc集成到TestNG报告中
- 10. 有没有什么办法可以从C++源代码生成webkit idl
- 11. 有没有什么办法可以生成DOCX文件的缩略图?
- 12. 有什么办法可以这样吗?
- 13. 有什么办法可以缓存ASIFormDataRequest?
- 14. 有什么办法可以chroot linux filemanager?
- 15. 有什么办法以编程方式生成Python字节码?
- 16. 有没有什么办法可以自动化生成的原生查询在Torque中的日志记录?
- 17. 有没有什么办法可以在eclipse中编译GnuTLS?
- 18. 有没有什么办法可以在windows phone中创建pdf
- 19. 有没有什么办法可以在DataGrid中显示CheckBox
- 20. 有没有什么办法可以在jQuery中捕捉空间
- 21. 有没有什么办法可以在QGridLayout中删除QWidget?
- 22. 有没有什么办法可以在函数中使用get_sidebar?
- 23. 有没有什么办法可以在MATLAB中增加'realmax'?
- 24. 有没有什么办法可以在Python中定义枚举?
- 25. 有什么办法可以将从heat.exe生成的组件分类为功能?
- 26. 有什么办法可以生成编码UI项目的exe文件吗?
- 27. 有什么办法可以将C++程序转换成ASP.NET吗?
- 28. Jmeter远程执行 - 有什么办法可以从ant提供全局属性?
- 29. 有什么办法可以防止在.NET中移动文件?
- 30. 有什么办法可以在ServerSocketChannel中使用SSLContext?
下面的答案将工作,但你提到你正在使用维克斯。根据我正在阅读的书“WIX:Windows Installer XML开发人员指南”,您可以将id定义为*,Wix将为您生成一个新的Guid。 所以你可以做