在我的构建脚本尝试设置变量之前,我正在尝试将"Application.revision"属性从application.properties文件读取到一个名为"svna.version"的变量中。 在我的一些系统上,我没有 svn 客户端,所以 svnversion 失败并且变为空白。 而不是失败,我希望它是最后一个已知值。
如何设置 svna.version? 我正在尝试做这样的事情
<propertyfile file="src/CASUAL/resources/CASUALApp.properties"/>
<property name="svna.version" value="${Application.revision}"/>
我只需要知道如何将属性读入 Ant 变量。 在上面的示例中,不会从属性文件中读取该值。 它被读取为文本字符串。
根据要求,我正在添加属性文件的内容:
Application.name=CASUAL
Application.title=CASUAL R
Application.version=${Application.revision}.${Application.buildnumber}
Application.vendor=AdamOutler
Application.homepage=xda-developers.com
Application.description=CASUAL Cross-platform ADB Scripting Universal Android Loader
Application.vendorId=AdamOutler
Application.id=${Application.name}
Application.lookAndFeel=system
Application.buildnumber=2,888
Application.revision=254
我需要将 Application.revision 读取到属性"svna.version"中,但它读取为文字字符串而不是键值对。
好的 - 刚刚发现了它。 您需要使用<loadproperties/>
或<property file="foo.properties"/>
您正在使用的任务是编写属性文件而不是加载它们。
在此处或实际上在此处加载属性
在此处写入属性
使用 -d 和 -v 运行 ant 在这里非常有帮助。
我只想添加这个完成的代码示例,该示例尝试从命令加载 svnversion,如果失败,它将从存储的变量加载。
<target name="-pre-init" description="Sets the buildversion for the current build">
<exec outputproperty="svna.version" executable="svnversion" failifexecutionfails="false" >
<arg value="-c" />
<redirector>
<outputfilterchain>
<tokenfilter>
<replaceregex pattern="^[0-9]*:?" replace="" flags="g"/>
<replaceregex pattern="M" replace="" flags="g"/>
</tokenfilter>
</outputfilterchain>
</redirector>
</exec>
<echo>revision after svnversion command: ${svna.version}</echo>
<loadproperties srcfile="src/CASUAL/resources/CASUALApp.properties"/>
<property name="svna.version" value="${Application.revision}"/>
<echo>Loaded property value: ${svna.version}</echo>
<echo>revision after loaded property: ${svna.version}</echo>