2016-02-15 5 views
3

У меня есть проект Gradle, который зависит от подпроектов. Я хотел бы создать «живую банку», содержащую все мои подпроекты, и внешние зависимости как внешние банки.Как создать банку с внутренними зависимостями в комплекте и внешними зависимостями в качестве внешних банок?

build.gradle:

dependencies { 
    compile project(':MyDep1') 
    compile project(':MyDep2') 
    compile 'com.google.guava:guava:18.0' 
} 

Я хотел бы быть в состоянии генерировать следующий вывод:

MyProject.jar -> Включает MyDep1 & MyDep2

libs/guavaXXX.jar -> Guava как внешний Lib

Я не знаю, как я мог это сделать.

ответ

0

я наконец сделал это работать с этим решением:

jar { 
    subprojects.each { 
     from files(it.sourceSets.main.output) 
    } 
} 

distributions { 
    main { 
     contents { 
      exclude subprojects.jar.archivePath.name 
     } 
    } 
} 

В банке моего проекта, я включаю содержание всех подпроектов Выходы , В дистрибутиве я исключаю jar из подпроектов (поэтому он содержит только зависимости). Это, вероятно, не самый лучший способ, но он прост и работает.

1

Используйте различные конфигурации для хранения внутренних и внешних зависимостей и установите только одну из этих конфигураций в свой артефакт проекта.

configurations{ 
    internalCompile 
    externalCompile 
} 

//add both int and ext to compile 
configurations.compile.extendsFrom(internalCompile) 
configurations.compile.extendsFrom(externalCompile) 

dependencies{ 
    internalCompile project(':MyDep1') 
    internalCompile project(':MyDep2') 

    externalCompile 'com.google.guava:guava:18.0' 
} 

в вашем жира баночки задачи включают в себя только internalCompile

+0

Спасибо, это похоже на хорошее решение! –

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