2015-11-11 2 views
2

После нескольких часов исследований и попыток я надеюсь, что кто-то может объяснить, как мы можем иметь Gradle, включая классы одного или нескольких подпроектов в конкретную банку.Как включить классы подпроектов в банку?

Допустим, у нас есть только три модуля

  1. Ядро
  2. App
  3. Web

Очевидно App и Web проекта артефакты (банки) должны содержать все классы из проекта Core ,

Настройки Gradle:

rootProject.name = 'MyProject' 
include 'MyProjectCore' 
include 'MyProjectApp' 
include 'MyProjectWeb' 

MyProjectApp/MyProjectWeb:

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

Проекты могут быть скомпилирован, но выходные банки не содержат основные классы.

+0

Какой целевой пакет вы пытаетесь построить? Если впоследствии он будет развернут на сервере приложений (я предполагаю это, поскольку есть суб-проект «веб-сайт»), вы также можете попробовать ура или плагин градиента. Существуют специальные области зависимости, чтобы добавить суббары/войны так, как вы этого хотите. –

ответ

3

ОК, наконец, я нашел рабочее решение, даже если оно может быть не лучшим.

Для App и Web проектов я перезаписать jar задача, как это добавить исходные наборы в Core модуля.

jar { 
    from project.sourceSets.main.allSource 
    from project(":MyProjectCore").sourceSets.main.java.srcDirs 
} 
Смежные вопросы