2017-02-22 20 views
0

я хочу сделать что-то вроде этого:Как получить источники из родительского проекта как зависимость

dependencies { 
    compile project(':projectA', classifier: 'sources') 
} 

Но я не мог найти такую ​​функциональность, я искал в документации, но не было ничего, кроме указав классификатор на реальные зависимости.

Итак, существует ли способ добавления источников из родительского проекта внутри проекта Mradle multimodules в качестве зависимости?

+0

Что такое использование случай наличия "источников как зависимость? Обычно вы зависите от скомпилированных классов. –

+0

@MartinLinha Компиляция gwt требует источников на пути к классам – jmattheis

ответ

0

Я не знаю, что есть функция от Gradle для этого, но есть обходной путь:

  1. Добавить packageSources в проект, который должен привести источники

    // projectA/build.gradle 
    
    project.task("packageSources", type: Jar) { 
        classifier = 'sources' 
        from { project.sourceSets.main.allSource } 
    } 
    
  2. Зависит от задачи на compileJava, где необходимы источники

    // projectB/build.gradle 
    
    compileJava.dependsOn tasks.getByPath(':projectA:packageSources') 
    
  3. Добавить источник в зависимости

    // projectB/build.gradle 
    
    dependencies { 
        compile files(tasks.getByPath(':projectA:packageSources').archivePath) 
    } 
    
0

Projecta/build.gradle

configurations { 
    sources 
} 
dependencies { 
    sources sourceSets.main.allSource 
} 

projectB/build.gradle

dependencies { 
    compile project(path: ':projectA', configuration: 'sources') 
} 

См DependencyHandler.project(Map)

+0

Это, вероятно, лучшее решение, недостатком является то, что Intellij IDEA игнорирует это свойство. – jmattheis

+0

http://stackoverflow.com/help/someone-answers –

+0

@jmattheis Может использовать задачу идеи градации из плагина идеи, чтобы обновить .iml-файлы;) Поддержка IntelliJ gradle никогда не была идеальной – LazerBanana