2016-10-25 3 views
0

Я пытаюсь получить доступ к некоторым файлам родительского проекта в под-модулях, но я не могу получить к ним доступ.Почему родительские классы проектов недоступны в модулях

Моей структура проект выглядит

project 
    |---build.gradle 
    src 
    |---main 
     |--java 
      |---EnvConfig.java 
    API_MODULE 
    src 
    |----main 
      |---java 

главный build.gradle выглядит

dependencies { 

    compile("org.springframework.boot:spring-boot-devtools") 

    compile project(":API_Module") 
} 

Я хочу, чтобы получить доступ к EnvConfig класса в API_Module, который находится в родителях, как я буду делать это. Я уже компилирую API_Module в parent build.gradle, должен в компиляции родителя в дочернем. Я думаю, что это не очень хорошая практика. Пожалуйста, предложите мне хорошую практику.

Благодаря

+0

Охарактеризуйте USECASE больше. Вам нужно получить доступ к исходному файлу java или скомпилированному байт-коду этого класса? Зачем тебе это? – Crazyjavahacking

+0

Usecase у меня есть env config class (есть некоторые методы в нем) в родительском проекте, где я сделал связанные с конфигурацией среды. поэтому я хочу, чтобы он был доступен во всех модулях. –

+0

Тогда это должно быть в отдельном модуле, который используется всеми другими модулями. –

ответ

1

Не так много опыта в Gradle, но это, очевидно, больше связано с вашим дизайном упаковки и зависимости модулей.

Для типичного Maven проекта мульти-модуля (который также должен быть безопасным для применения в Gradle), что вы пытаетесь достичь, должен выглядеть следующим образом:

project 
    + project-core/  <- things share across modules 
    | + src/main/java/ 
    | + EnvConfig 
    | 
    + project-api/  <- Your original API module 
    | + dependency: project-core 
    | 
    + project-mod2/  <- Some other module that need to use EnvConfig 
    | + dependency: project-core 
    | 
    + project-main/  <- Your original top-level project, 
    |     which build on top of project-api & project-mod2 
    + dependency: project-core, project-api, project-mod2 
+0

Спасибо, я думаю, он должен работать. –

0

Это не будет работать, как добавить зависимость от API_MODULE к parent создаст циклическую зависимость.

Вы уверены, что ваш главный build.gradle должен иметь компиляцию с помощью API_MODULE?

Смежные вопросы