2011-12-20 94 views
1

我有以下标记:努力使构建时出现ANT结账任务失败

<?xml version="1.0" ?> 
<project name="SampleBuild" default="compile" basedir="."> 
    <property name="SvnAntDir" value="C:/Program Files/Apache/svnant-1.2.1/doc" /> 
    <property name="src" value="_src_" /> 
    <property name="build" value="_build_"/> 
    <property name="dist" value="${build}/_jars_" />  

    <path id= "svnant.classpath" > 
     <fileset dir= "${SvnAntDir}" > 
      <include name= "*.jar" /> 
     </fileset> 
    </path> 

    <target name="pre-cleanup"> 
     <delete dir="${src}" />  
     <delete file="${dist}/Project.jar" /> 
     <delete includeEmptyDirs="true" failonerror="false"> 
      <fileset dir="${build}/_classes_/sevgok/" /> 
     </delete> 

     <mkdir dir="${src}" /> 
     <tstamp /> 
    </target> 

    <target name="checkout" depends="pre-cleanup">  
     <typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath" />  
     <svn> 
      <checkout url="svn://p-subversion/Project/trunk" revision="HEAD" destPath="${src}" /> 
     </svn> 
    </target> 

    <target name="compile" depends="checkout"> 
     <javac srcdir="${src}" destdir="${build}/_classes_" debug="on" debuglevel="lines,vars,source"> 
      <classpath> 
       <pathelement path="${classpath}" /> 
       <fileset dir="./_libs_"> 
        <include name="*.jar" /> 
        <include name="*.zip" /> 
       </fileset> 
      </classpath> 
     </javac> 
    </target> 
</project> 

问题。该错误信息是未来:

checkout: [svn] <Checkout> started ... 
[svn] svn: svn://p-subversion/Project/trunk` doesn't exist 
[svn] svn: svn://p-subversion/Project/trunk` doesn't exist 
[svn] <Checkout> failed! 

Build FAILED 
C:\build.minimal.xml: (line of code which points to <svn> openning tag): Can't checkout.` 

同时也有可能使与使用url乌龟SVN客户结帐。

帮助!

编辑

我试图建立在使用-v键,得到如下:

Caused by: org.tigris.subversion.svnclientadapter.SVNClientException: org.tigris .subversion.javahl.ClientException: svn: URL 'svn://p-subversion/Project/trunk ' doesn't exist

编辑

是否有任何替代SvnAnt?如果它也被很好地记录,那将是很棒的。

感谢

编辑

所以这对我的作品的代码是:

<target name="checkout" depends="pre-cleanup"> 
    <exec dir="${basedir}" executable="svn" failonerror="true"> 
     <arg line="checkout -r ${revision} ${SvnUrl} ${src}" /> 
    </exec> 
</target> 

其中${SvnUrl}是我之前使用的相同的URL。

+0

那么,svn:// p-subversion/Project/trunk是否存在?如果您自己执行结帐命令,会发生什么情况? – 2011-12-20 10:05:38

+0

是的,它的确如此。我选择了一个普通的文件夹修订版本。 – lexeme 2011-12-20 10:12:42

+0

难道项目在储存库或类似的地方拼成较低的p? – oers 2011-12-20 10:39:12

回答

2

如果svnant不能在所有的工作,你可以只在命令行中执行的svn:

<exec executable="svn" dir="DIRECTORY_WHERE_COMMAND_EXECUTES"> 
    <arg line="checkout svn://p-subversion/Project/trunk $src"/> 
</exec> 

你将不得不安装一个svn command line client。请确保您将bin-客户端的目录添加到PATH
但请注意安装与您的龟客户端相同的客户端版本。如果他们不匹配,他们会使工作副本无法访问另一个。

+0

据我所知,'dir'属性不应该指向'DIRECTORY_OF_SVN_CLIENT'。在我的情况下,例如,它指向我的构建文件存储的文件夹并从我执行它们('$ {basedir}')。但无论如何,谢谢!这有帮助。 – lexeme 2011-12-21 08:52:03

+0

哦,对,它是命令必须执行的目录 – oers 2011-12-21 08:57:05

0

什么是p-subversion应该是? SVN URL与HTTP URL一样,以主机名开头。如果p-subversion不是指向您计算机的主机名,则结帐将失败。也许它应该看起来更像这样?

svn://localhost/p-subversion/Project/trunk

[编辑]如果它是一个Windows共享...

file://p-subversion/Project/trunk

svn:// URL假定一个主机名,但在A股的情况下,操作系统的其他部分是已经在协商TCP连接。像其他文件夹一样引用它。

+0

我有一个网络共享nd定期从远程机器(使用'//p-subversion/[RepositoryName]/[trunk | branch]''类型的url)进行签出。 – lexeme 2011-12-20 13:56:19

+0

我已经编辑了我的答案,以解决处理Windows共享的问题。 – 2011-12-20 14:05:20