Как можно настроить проект Gradle, в котором подпроект зависит от основного проекта?

#java #gradle #project-management #project-structure #multi-project

#java #gradle #управление проектами #проект-структура #многопроектный

Вопрос:

В моем исходном коде есть мини-приложение, которое я пытаюсь перенести в отдельный подпроект. Однако мини-приложение зависит от основного проекта. Как можно настроить build.gradle файл, чтобы отразить это?

Вот моя структура каталогов:

 /
    src/
        main/java/<main project source>
    build.gradle
    settings.gradle
    subproject/
        src/
            main/java/<subproject source>
        build.gradle
  

Я думал, что можно было бы сделать что-то подобное в build.gradle файле для подпроекта:

 build.dependsOn ":build"
  

Но это, похоже, не работает.

Комментарии:

1. не могли бы вы пояснить, что вы подразумеваете под «мини-приложение зависит от основного проекта» здесь?

2. @PerryFowler По сути, основной проект — это библиотека, а подпроект — это реализация этой библиотеки.

Ответ №1:

Для этого необходимо правильно настроить зависимости компиляции.

Оператор build.dependsOn ":build" будет устанавливать только зависимости задач (т. Е. :subproject:build выполняется после основного проекта «: build»). Вероятно, в этом нет необходимости, сборка основного проекта выполняется до сборки подпроекта в любом случае. Он не будет настраивать зависимости компиляции (т. Е. Какие классы / библиотеки включать).

Вместо этого (или дополнительно) добавьте зависимость компиляции к вашему основному проекту в вашем subproject/build.gradle файле:

 dependencies {
    compile project(':')
}