有没有办法在ANT中生成一个guid?

时间:2011-10-10 18:35:40

标签: ant guid

我有一个ant脚本来管理构建过程。对于WiX,我需要在生成新版本的安装程序时生成新的guid。任何人都知道如何在ANT中做到这一点?任何使用内置任务的答案都会更好。但如果我必须添加另一个文件,那很好。

2 个答案:

答案 0 :(得分:25)

我使用scriptdef task来定义包装Java UUID类的简单javascript任务,如下所示:

<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

如果你有一个合理的最新Ant安装,这应该是开箱即用的。

答案 1 :(得分: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和ant 1.8