java - 通过 ANT 检索 SVN 修订版

标签 java svn ant

所以,我有一个 Java 项目,我为其构建了一个(相当复杂的)ANT 构建文件。 在这个文件中,我有要编译、JAR 和测试我的代码的目标,这些都运行得很好。

这个项目的有趣之处在于,团队成员在他们的个人计算机上工作,其中许多在 Windows 7 上运行 Eclipse Juno。我不能保证我添加到 ANT 的任何库在其他计算机上可用成员(member)的电脑。因此,我尝试在运行时引用所有必要的库。但是,当我尝试获取当前修订号时出现错误。

错误:

svntest:
[echo] Svn4Ant: JWare AntXtras/Svn4Ant 3.0.0, Aug-22-2011, SVNKit: SVN/1.7.8 SVNKit/1.7.8 (http://svnkit.com/) r9538_v20130107_2001
[svn:revget] Unable to execute svnclient subcommand revget. Reason: "svn: E155021: The path {Project Repository} appears to be part of a Subversion 1.7 or greater
[svn:revget] working copy.  Please upgrade your Subversion client to use this
[svn:revget] working copy.".

ANT 类路径:

AntClassLoader[C:\Users\User\workspace\RoboLib\utils\ant-commons-net.jar;
C:\Users\User\workspace\RoboLib\utils\ant-googlecode-0.0.3.jar;
C:\Users\User\workspace\RoboLib\utils\commons-net-3.2.jar;
C:\Users\User\workspace\RoboLib\utils\jw-antxtras.jar;
C:\Users\User\workspace\RoboLib\utils\jw-svn4ant-admin.jar;
C:\Users\User\workspace\RoboLib\utils\jw-svn4ant.jar; 
C:\Users\User\workspace\RoboLib\utils\svnkit-1.7.8.jar;
C:\Users\User\workspace\RoboLib\utils\svnkit-cli-1.7.8.jar;
C:\Users\User\workspace\RoboLib\utils\svnkit-javahl16-1.7.8.jar]

所有这些库都是最新版本,并且测试它们的系统是在 Windows 7 上运行的 Eclipse Juno。

相关 ANT 目标:

<project default="run" name="WAVE RoboLib SDK" basedir="." xmlns:svn="jwaresoftware.svn4ant.client">

... 

<target name="svntest">
    <taskdef uri="jwaresoftware.svn4ant.client"     
    resource="org/jwaresoftware/svn4ant/client/antlib.xml">
        <classpath>
            <fileset dir="utils/">
                <include name="**.jar"/>
            </fileset>
        </classpath>
    </taskdef>

    <svn:libcheck/> 
    <echo message="Svn4Ant: ${svn4ant.label}, SVNKit: ${svnkit.label}"/>

    <svn:server id="my.repo" isdefault="yes" authcache="no" >
        <url value="${svn.url}"/>
        <credential username="un" password="pw"/>
    </svn:server>

    <svn:revget path="." property="build.reporev" />

    <echo message="${build.reporev}" />
</target>
</project>

最佳答案

看起来 svn4ant 不支持 svn 1.7 存储库,请参阅 relevant discussion关于此主题的解释包括源代码引用。

svn4ant release plan来看目前还没有计划很快支持 svn 1.7 工作副本。 因此,您应该寻找另一种方式来获取修订信息。

一种选择是解析 svn info 输出,使用 svnversion 获取工作副本的修订版或使用提交后 Hook 将修订号存储在其他地方.

关于java - 通过 ANT 检索 SVN 修订版,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570300/

相关文章:

作为应用程序工作但不作为小程序工作的 Java 类

java - 检查时间是否已过最有效的替代方案将线程存储在 HashMap 上或使用 nanoTime()

iphone - 有没有人找到一种方法来 merge Xcode 项目或 Core Data 模型文件中的更改?

git - 将 SVN 存储库迁移到 Gitblit

regex - 根据文件中的正则表达式设置 Ant 属性

java - 变量仅在第一次运行时递增?

java - 当移动到另一个 fragment 并返回到它时,保存 fragment 内的 textView 值的正确方法是什么?

svn - Jenkins 中的提交后 Hook 尝试使用相同的修订号更新所有 SVN checkout

java - 使用 ANT 如何在 Hudson 上构建和部署非 Maven 项目

java - 使用 ProGuard 后出现 InspirationTargetException