2013-06-11 33 views
8

Gradle'daki diğer projelerden Görevler kullanmak mümkün olduğunda kafamı almaya çalışıyorum. Ayrıca sahip ebeveyn PROJECTA ProjectC içinde build.gradle olarak ebeveyn PROJECTABuildscript'te projeye olan gradient bağımlılığı

sahip en ProjectB src/main/harika com.MyTask içeren bir projedir varsayalım: görünüyor

buildscript { 
    dependencies{ 
     project(':ProjectB') 
    } 
} 

mantıklı oluyorsun, çünkü "proje (: 'ProjectB')" yazısında bir yazım hatası girmeye zorlanıyor. Ne de başarısız, bu satırı tanıtıyor:

import com.MyTask 

Proje referansları, site kapatılmasında geçerli değil mi? Ayrıca com.MyTask'ı aynı miktarda başarı ile buildSrc/src/main/groovy'ye taşımaya çalıştık. Gradle belgelerinde 15.4. Adding dependencies to a task kaynaktan

cevap

4

benim için çalıştı çözüm dan görev bağımlılığı ekleme configurationtime de ve kaynaklarda hem mevcut "com.MyTask" yapmaktı. ProjectA (ana) bu buildSrc/build.gradle en sourceSets eklendi aldı:

sourceSets{ 
    main{ 
     groovy{ 
      srcDir 'ProjectB/src/main/groovy' 
     } 
    } 
} 

Şimdi ProjectC ve diğer tüm projeler MyTask kullanabilirsiniz. Aynı zamanda, ProjectB'nin son kavanoz ile paketlenmiştir.

konu

da iyice Adam Murdoch, Luke Daley ve Steve Ebersole arasındaki tartışıldı: http://gradle.1045684.n5.nabble.com/buildSrc-as-a-regular-project-td5677255.html

Edit: Bu bağımsız proje daha üst buildSrc akıllı manipule edici oldu. Bu şekilde IntelliJ mutlu-şanslı.

+0

"IntelliJ beğenmedim "haha, hayır ben bahse girmedi. –

+0

Haha! Cevapladığınız cevap için özür dilerim @ mike-rylander! – judoole

+0

IntelliJ'i nasıl mutlu edeceğinizi anladığınız için teşekkürler. –

0

:

Örnek 15.13. Başka bir projede

build.gradle 

project('projectA') { 
    task taskX(dependsOn: ':projectB:taskY') << { 
     println 'taskX' 
    } 
} 

project('projectB') { 
    task taskY << { 
     println 'taskY' 
    } 
} 
+0

İyi çağrı! Ama problemi yeterince açıklayamamış olabilirim. Kullanmak istediğim görevler tanımlanmadı, sınıf yolunda oluşturulan Görevler. Örneğin, ProjectC'nin mavenLocal() öğesine aktarılması ve proje dosyasında ProjectB'ye aktarılması iyi sonuç verir. Sonra MyTask kullanılabilir. – judoole

+0

Ayrıca ProjectC'de bir "MyTask" tanımlamaya çalıştım ve ProjectB'de bağımlı olduğunu, ancak "MyTask" ın src/main/gradle olarak yapamayacağını ve buildSrc/src/main/gradle içinde yapamayacağımı da denedim. – judoole

+0

@ OleChristianLangfjæran, ch 15.2'ye baktınız mı? task.getByPath ('MyTask') ' –

İlgili konular