Я пытаюсь научиться лучше понимать использование Maven. У меня вопрос о правильном способе использования имен пакетов с несколькими модулями.Названия пакетов Maven с несколькими модулями
Я буду использовать пример, чтобы объяснить свой вопрос.
У нас есть следующий проект.
project
project-api Interfaces (implemented by the modules)
project-core Logic
project-persistence Data (models, repository etc)
project-utils Utilities (hashing, calculating etc)
project-gui Graphical User Interface
project-cli Command Line Interface
project-dist Distribution (generate the JAR's together)
Со следующими классами.
project-api
Repository Interface
project-core
AbstractRepository Abstract class (implements Repository)
Core Class
project-persistence
SampleRepository Class (extends AbstractRepository)
Sample Class (model)
project-utils
Calculator Class
project-gui
Demo Class (main)
Теперь, когда у нас есть этот материал, мы создадим следующий класс Demo.
public class Demo() {
public static void main(String[] args) {
Core core = new Core();
core.start();
Repository sampleRepository = new SampleRepository();
Sample sample = sampleRepository.get();
Calculator.calc(sample);
}
}
Нам также необходимо импортировать упаковки. Какой вариант вы должны использовать в своем проекте, или если опция не прослушивает, какой будет правильный путь?
Вариант 1
Имя все модули упаковывает же, как и модуль -name: com.company.project.api
package com.company.project.gui
import com.company.project.api.persistence.repository.Repository;
import com.company.project.core.Core;
import com.company.project.persistence.repository.SampleRepository;
import com.company.project.persistence.models.Sample;
import com.company.project.utils.Calculator;
Вариант 2
Назовите API модуль модуля совпадает с корневым именем проекта: com.company.project
package com.company.project.gui
import com.company.project.persistence.repository.Repository;
import com.company.project.core.Core;
import com.company.project.persistence.repository.SampleRepository;
import com.company.project.persistence.models.Sample;
import com.company.project.utils.Calculator;
Вариант 3
Имя все модули упаковывает так же, как имя корневой пакет проекта: com.company.project
package com.company.project
import com.company.project.repository.Repository;
import com.company.project.Core;
import com.company.project.repository.SampleRepository;
import com.company.project.models.Sample;
import com.company.project.Calculator;
Все отзывы, предложения и т.д. приветствуются. Заранее спасибо!
Обычно я придерживаюсь опции 1, поскольку я нахожу ее более понятной – Koby