我正在尝试使用 svnant 的 propget 任务查询 SVN 属性值,但遇到了问题。
我编写了一个简单的 Ant 目标来更新构建文件的文件夹,然后查询一个属性:
<project name="svntest" default="test">
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />
<svnSetting javahl="false" svnkit="true" username="xxx" password="yyy" id="svn.settings" />
<target name="test">
<svn refid="svn.settings">
<update dir="." />
<propget path="file.xml" name="svn:keywords" property="prop.value" />
</svn>
<echo message="${prop.value}" />
</target>
</project>
我的 SVN 存储库在 1.7.5 上,我有 svnkit 1.7,应该兼容。
如果我注释掉 propget 和 echo 行,它会更新文件夹。但是当我尝试查询特定文件的 svn:keywords 属性时,我收到此错误:
C:\somepath\test.xml:11: java.lang.NoSuchMethodError: org.tigris.subversion.javahl.PropertyData.(Lorg/tigris/subversion/javahl/SVNClientInterface;Ljava/lang/String;Ljava/lang/String; Ljava/lang/String;[B)V
我已将 file.xml 的 svn:keywords 属性设置为“值”,所以它确实存在,并提交了它。
如果我更改 propget 名称参数以查找不存在的 SVN 属性(例如“testprop”),它不会失败,它只会返回“${prop.value}”,我假设是因为 prop.value 属性没有被设置。如果我实际上将自定义“testprop”SVN 属性添加到 file.xml,我会再次收到上述错误 - 所以它似乎只在它找到一个属性并尝试获取它的值时发生。
我以前在尝试使用 javahl 时遇到过问题,因此将其设置为 false 并改用 svnkit。但是,由于更新任务有效,我不会认为 javahl/svnkit 绑定是问题所在。
任何帮助表示赞赏,谢谢。