2011-03-10 73 views
3

我試圖將svn修訂版添加到我的app.version,而不需要使用ant或其他類似的外部工具。它看起來像我可能能夠鉤入_Events.groovy這個,但文檔相對稀少。grails將svn修訂版添加到app.version

任何人都知道如何做到這一點?

回答

7

This來自Grails nabble郵件列表的鏈接提供了您正在尋找的解決方案。也把這裏的代碼的完整性:

scripts/_Events.groovy

eventWarStart = { type -> 

    println "******************* eventWarStart *****************" 
    try { 
     // initialise SVNKit 
     DAVRepositoryFactory.setup(); 
     SVNRepositoryFactoryImpl.setup(); 
     FSRepositoryFactory.setup(); 

     SVNClientManager clientManager = SVNClientManager.newInstance(); 
     println "clientManager = " + clientManager.toString(); 
     SVNWCClient wcClient = clientManager.getWCClient(); 
     println "wcClient = " + wcClient.toString(); 

     // the svnkit equivalent of "svn info" 
     File baseFile = new File(basedir); 

     println "baseFile = " + baseFile.toString(); 
     SVNInfo svninfo = wcClient.doInfo(baseFile, SVNRevision.WORKING); 
     println "svninfo = " + svninfo.toString(); 

     def version = svninfo.getURL(); 
     println "Setting Version to: ${version}" 
     metadata.'app.version' = "${version}".toString() 
     metadata.persist() 

    } 
    catch (SVNException ex) { 
     //something went wrong 
     println "**************** SVN exception **************" 
     println ex.getMessage(); 
    } 

} // End eventWarStart() 
+0

這個偉大的工程,除了背後git svn。我必須從我的構建服務器上取得應用程序版本,但這是要走的路。 – 2011-03-11 17:39:38

+0

這會打印出SVN網址,而不是建議的版本。我想修訂號碼,所以我使用了'def version = svninfo.revision'。 – nickdos 2014-05-16 05:13:13

0

Grails的3.x中,在的build.gradle,SVN版本添加到應用程序版本:

version "1.0.${getSvnRevision()}" 

def getSvnRevision() { 
    def proc = "svnversion".execute() 
    return proc.in.text 
}