Gradle - мульти проект с общими зависимостями модулей - PullRequest
1 голос
/ 14 января 2020

Я создал базовый проект 'сервер' (сервер), который включает в себя базовую зависимость проекта, такую ​​как:

build.gradle (:backend)

dependencies { implementation project(':base') }

settings.gradle (:backend)

rootProject.name = 'backend'

include ':base'
project(':base').projectDir = new File(settingsDir, '../base')

Я могу открыть проект «бэкэнд» и запустить его без проблем.

Как вы, наверное, поняли из «../base» в файле настроек, «базовый» проект на один уровень выше. На этом уровне у меня есть другой проект, подобный этому:

settings.gradle (:OneLevelAbove)

rootProject.name='OneLevelAbove'
include ':app', ':base', ':SharedCode', ':backend'

Я не получаю ошибок от IDE где-нибудь, и мои другие проекты работают просто отлично, используя код из ': base'.

Однако моя проблема в том, что когда я вместо этого пытаюсь запустить проект ': backend' отсюда, я получаю cra * sh:

Exception in thread "main" java.lang.NoClassDefFoundError: path/to/base/project/Class
    at server.ServerKt.main(Server.kt:23)
Caused by: java.lang.ClassNotFoundException: path.to.base.project.Class
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

Если я удаляю весь код, относящийся к ': base', сервер работает нормально, поэтому я предполагаю, что есть проблема с включением, или, возможно, с classpath.

Я новичок в Gradle, поэтому мне интересно как правильно настроить его, чтобы иметь возможность запустить сервер из проекта «OneLevelAbove», также используя код из «: base».

Заранее спасибо.

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