2014-09-03 41 views
5

Şu anda çok sayıda global malzeme içeren bir libs/commons.gradle dosyası oluşturmak için platform derlememizi modülerleştiriyorum. Buna paralel olarak geliştirdiğimiz yazılımın çeşitli dallarının paralel olarak gelişmesine ihtiyacım var ve tüm şubelerdeki tüm script dosyası değişikliklerini yaymaktan kaçınmak istiyoruz. commons.gradle İçinde 'gradle/üstünkörü/commons.gradle'Not: İçe aktarılan bir komut dosyasından nasıl bir 'def' diyebilirim?

Ben svnrevision işlevi tanımlayın:

itibaren geçerlidir:

Ben de "dan uygulamak" kullanılan lib dosyası ve bunu yüklemeye oluşturulur:

...

def svnRevision = { 
    ISVNOptions options = SVNWCUtil.createDefaultOptions(true); 
    SVNClientManager clientManager = SVNClientManager.newInstance(options); 
    SVNStatusClient statusClient = clientManager.getStatusClient(); 
    SVNStatus status = statusClient.doStatus(projectDir, false); 
    SVNRevision revision = status.getCommittedRevision(); 
    return revision.getNumber().toString(); 
} 

...

ben çağırıyorum ediyorum Benim de dahil olmak üzere build.gradle gelen g fonksiyonu:

...

task writeVersionProperties { 
    File f = new File(project.webAppDirName+'/WEB-INF/version.properties'); 
    if (f.exists()) { f.delete(); } 

    f = new File(project.webAppDirName+'/WEB-INF/version.properties'); 
    FileOutputStream os = new FileOutputStream(f); 
    os.write(("version="+svnRevision()).getBytes()); 
    os.flush(); 
    os.close(); 
} 

...

Ama sonuna kadar:

...

FAILURE: Build failed with an exception. 

    * Where: 
    Build $PATH_TO/build20.gradle 

    * What went wrong: 
    A problem occurred evaluating root project 'DEV_7.X.X_GRADLEZATION'. 
    > Could not find method svnRevision() for arguments [] on root project 'DEV_7.X.X_GRADLEZATION'. 

...

Bu yüzden benim queston'um'dur: Bir komut dosyasında tanımlanan bir alt işlevi nasıl arayabilirim?

Herhangi bir yardım için teşekkür ederiz! http://www.gradle.org/docs/current/userguide/writing_build_scripts.html itibaren

cevap

3

:

13.4.1. Yerel değişkenler, anahtar sözcüğü ile bildirilir. Yerel değişkenler, def anahtar sözcüğüyle bildirilir. Bunlar, bildirildikleri alanda yalnızca görünür. Yerel değişkenler , temel Groovy dilinin bir özelliğidir.

13.4.2. Ek özellikler

Gradle'ın etki alanı modelindeki tüm gelişmiş nesneler, fazladan kullanıcı tanımlı özellikler içerebilir. Bu, projeleri, görevleri ve kaynak kümelerini içerir, ancak bunlarla sınırlı değildir. Ekstra özellikler eklenebilir, okunabilir ve sahip olunan nesnenin ext özelliği üzerinden ayarlanabilir. Alternatif olarak, bir defada birden fazla özellik eklemek için bir ext bloğu kullanılabilir. Eğer olarak ilan ederse

:

ext.svnRevision = { 
... 
} 

ve çağrı değişmez, işe bekliyoruz.

+0

bu benim için çalışır. çok teşekkürler! – gorefest

İlgili konular