2016-07-26 42 views
0

在的build.gradle我们的团队使用下面的代码去拿SVN版本:如何改变Android的工作室SVN路径的build.gradle

windows下
def getSvnRevision() { 
new ByteArrayOutputStream().withStream { os -> 
    def result = exec { 
     executable = 'svn' 
     args = ['info'] 
     standardOutput = os 
    } 
    def outputAsString = os.toString() 
    def matchLastChangedRev = outputAsString =~ /Last Changed Rev: (\d+)/ 
    ext.svnRev = "${matchLastChangedRev[0][1]}".toInteger() 
    } 
    return svnRev 
} 

作品。

但是在我的mac下,因'svn'指向'/ usr/bin/svn'而失败,这是1.7,而我的工作区使用/usr/local/bin/svn(1.8)。

尝试设置首选项 - >版本控制 - > Subversion->使用命令行客户端到/ usr/local/bin/svn,但似乎gradle坚持使用/ usr/bin/svn。

检查方式:

def getSvnRevision() { 
    new ByteArrayOutputStream().withStream { os -> 
     def result = exec { 
      executable = 'which' 
      args = ['svn'] 
      standardOutput = os 
     } 
     def outputAsString = os.toString() 
     print 'svn:'+outputAsString 
//  def matchLastChangedRev = outputAsString =~ /Last Changed Rev: (\d+)/ 
// 
//  ext.svnRev = "${matchLastChangedRev[0][1]}".toInteger() 
    } 
return 1 
// return svnRev 
} 

输出: SVN:在/ usr/bin中/ SVN

所以,我怎样才能改变SVN点到/ usr/local/bin目录/无改变getSvnRevision svn的? (因为getSvnRevision工作正常,其他球队承包商,客人的电脑上)

回答

0

我想,在executable提供完整路径应该工作:

executable = '/usr/local/bin/svn'

+0

是的,它应该工作。但其他团队成员正在使用不支持此编辑的Windows操作系统。 – CompileLife

+1

finnaly我补充:import org.apache.tools.ant.taskdefs.condition.Os ext {sdn} Os.isFamily(Os.FAMILY_MAC)? '/ usr/local/bin/svn':'svn' } – CompileLife