2015-08-28 3 views
2

Я пытаюсь научиться лучше понимать использование 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; 

Все отзывы, предложения и т.д. приветствуются. Заранее спасибо!

+0

Обычно я придерживаюсь опции 1, поскольку я нахожу ее более понятной – Koby

ответ

1

Хорошо, что вы рассмотрели разные варианты, поскольку нет стандартного де-факто для имен модулей; это вопрос личных предпочтений. Пока вы последовательны и сохраняете свои имена модулей короткими, и следуйте Maven naming conventions для groupID и artifactID, вам хорошо идти.

В любом случае, я считаю, что №1 - лучший вариант. Как правило, это хороший подход, чтобы попытаться провести параллель между Java пакетов и классы, чтобы Maven groupIDs и artifactIDs.

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