Как создать общий проект gradle, используемый другими проектами - PullRequest
0 голосов
/ 14 марта 2020

У меня есть проект gradle, который состоит из 3 частей: клиентская, общая и сервисная. Есть некоторые классы, которые используются как в клиентском проекте, так и в сервисном проекте, поэтому я хотел создать общий модуль и собрать из него jar, а затем импортировать его в два других проекта в виде библиотеки. Я поместил общие классы в общий модуль, я не создал основной класс, потому что я хочу, чтобы проект предоставлял только другие классы, поэтому это выглядит так:

enter image description here

Затем я попытался импортировать его в другой проект как библиотеку и собрать их, но когда я пытаюсь собрать его с помощью gradle, он выдает кучу ошибок о классах из общего модуля: enter image description here

Я не смог найти в Интернете никаких уроков, как сделать общий модуль с Gradle. Любая помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 14 марта 2020

Предполагая, что все три модуля являются частью одной многомодульной сборки, затем в client\build.gradle и service\build.gradle вы добавляете:

dependencies {
  implementation project(':common')
}

Синтаксис project(:module) описан в Зависимости проекта документы .

Однако, если common, client и service являются отдельными проектами и не используют один и тот же root build.gradle, вы должны опубликовать sh common модуль в общий репозиторий и использовать его как любую обычную зависимость. Проще всего это сделать с репозиторием Maven Local.

1 голос
/ 14 марта 2020

В Gradle модули / подпроекты должны быть включены в файл settings.gradle в проекте root, чтобы сделать его частью всего проекта.
Вы можете добавить модуль в settings.gradle аналогично:

rootProject.name = 'gradle-root-project'
include('common') //this adds the module

Позже, либо скрипт сборки root, либо другие модули, если они хотят использовать классы модулей common, им необходимо объявить common как свою зависимость:

dependencies {
    implementation project(':common')
    //...
}

Например, если у вас в проекте будет другой модуль, скажем, client, и этот модуль должен использовать код из модуля common, то модуль client должен быть включен в settings.gradle файл проекта root и добавлен в качестве зависимости к сценарию build.gradle модуля client.

Если кто-то читает, что при настройке многомодальных проектов все еще возникают проблемы, тогда было бы неплохо проверить этот вопрос Почему gradle удаляет зависимость, когда я строю проект , у него немного больше времени и Более подробное объяснение того, что может происходить в конфигурациях проекта Gradle / IDE.

Если вы собираетесь больше работать с Gradle, вы можете взглянуть на эту статью об общем понимании Gradle.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...