2015-11-24 3 views
3

Я работаю в мультипроектной системе (с 40+ подпроектами). Каждый подпроект имеет свой собственный макет (большинство следует за общим макетом, но некоторые отличаются). Среди подпроектов у меня есть эти два:Грейд-зависимости от исходного набора различных проектов

- testjunit 
    - sourceSets 
     - lptfExperimental 
     - other source sets 

- basicservices 
    - sourceSets 
     - testacceptance 
     - other source sets 

мне нужно сделать исходный набор basicservices-testacceptance зависит от мощности источника устанавливается testjunit-lptfExperimental.

Я попытался сделать:

dependencies{ 
    testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output 
} 

И

dependencies{ 
    project.parent.subprojects.each{prj -> 
    if(prj.name == "testjunit") 
     testacceptanceCompile prj.sourceSets.findByName('lptfExperimental').output 
} 

Но в обоих случаях я получаю следующее сообщение об ошибке:

FAILURE: Build failed with an exception.

Where: Script 'C:\Development\defaults.gradle' line: 144

What went wrong: A problem occurred evaluating script. Could not find property 'lptfExperimental' on SourceSet container.

Просто дополнительная информация: эта зависимость объявлена в файле с именем defaults.gradle, который применяется в build.gradle проекта basicservices.

/defaults.gradle:

apply plugin: 'java' 
apply plugin: 'eclipse' 
... 
sourceSets { 
    ... 
    // test acceptance 
    testacceptance{ 

     java{ 
      srcDir 'test/acceptance/src/java' 
     } 

     resources { 
      srcDir 'test/acceptance/src/java' 
     } 
    } 
    ... 
} 

// default dependencies 
dependencies{ 
    testacceptanceCompile project(':testjunit') 
    testacceptanceCompile project(':testjunit').sourceSets.lptfExperimental.output 
} 
... 

/testjunit/build.gradle:

... 
sourceSets{ 
    ... 
    lptfExperimental{ 

    java { 
     srcDir 'lptf-experimental/src/java' 
    } 

    resources { 
     srcDir 'lptf-experimental/src/java' 
    } 
} 
... 

/basicservices/build.gradle:

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply from: '../defaults.gradle' 

dependencies{ 
    ... 
    compile project(':testjunit') 
    ... 
} 

ответ

1

Я мог бы решить проблему с решение, упомянутое в this question. В принципе, я добавил директиву evaluationDependsOn(':testjunit') в defaults.gradle. Он решил проблему. Ссылка для этой директивы - here.

Смежные вопросы