Настройка многомодульного проекта Gradle

Недавно я начал использовать Gradle и заменять свои существующие проекты на основе Maven. В прошлом у меня было много проблем с обработкой многомодульных сборок с помощью Maven. Gradle был глотком свежего воздуха при работе с многомодульными сборками, но еще не идеален.

У меня следующая структура папок для моих проектов:

-- Projects
---- EnterpriseApp1
------ EarProject
-------- build.gradle
------ EjbProject
-------- build.gradle
------ WarProject
-------- build.gradle
------ properties.gradle
------ build.gradle
---- CommonLib
------ build.gradle
---- ClientApplication
------ build.gradle

Проблема, с которой я столкнулся, заключается в том, что «EnterpriseApp1» и «ClientApplication» оба зависят от проекта CommonLib. Я не знаю, как настроить мой файл сборки «EnterpriseApp1» для использования проекта CommonLib в качестве зависимости для «EjbProject». Я очень близко подошел к тому, чтобы заставить это работать, но еще не совсем работаю. Мне удалось скопировать папку CommonLib внутри EnterpriseApp1, но это не долгосрочное решение.

Вот мой текущий файл properties.gradle в "EnterpriseApp1":

include "EarProject", "EjbProject", "WarProject"
includeFlat "CommonLib"

Согласно документации Gradle, команда "includeFlat" в файле "settings.gradle" будет включать проекты в тот же рычаг, что и папка, в которой находятся "settings". .gradle "(желаемое поведение).

Файл EnterpriseApp1 / build.gradle:

subprojects {
   apply plugin: 'java'

   sourceCompatibility  = 1.6
   group = 'org.example'
   version = '1.0-SNAPSHOT'

   repositories {
      mavenCentral()
      ...
   }

   dependencies {

   }    
}

EnterpriseApp1 / EjbProject / build.gradle:

apply plugin: 'java'

sourceCompatibility  = 1.6

repositories {
   mavenCentral()
   ...
}

dependencies {
   compile project(':CommonLib')

   compile group: 'org.restlet.jee', name: 'org.restlet', version: '2.0.11'
   compile group: 'ma.glasnost.orika', name: 'orika-core', version: '1.0'
   ...
   compile group: 'javax.jmdns', name: 'jmdns', version: '3.4.1'
}

Когда я выполняю «чистую сборку gradle» из папки EnterpriseApp1, все зависимости загружаются должным образом, и проекты начинают компилироваться (включая проект CommonLib), но проект EjbProject завершается неудачно во время сборки из-за того, что он отсутствует ссылка на банку CommonLib. Gradle недостаточно умен (или я совершенно невежественен;)), чтобы настроить мой EjbProject для использования Jar, сгенерированного на этапе сборки проекта CommonLib.

Прошу прощения за долгую и сложную настройку. Я уже некоторое время пытаюсь понять это, но у меня почти закончились идеи. Я был бы очень признателен за любую помощь сообществу.

Спасибо!

20
задан juan.villa 27 January 2012 в 02:36
поделиться