具有多个模块的 Maven 包名称

nbe*_*ijn 5 java package 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)
Run Code Online (Sandbox Code Playgroud)

有以下课程。

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)
Run Code Online (Sandbox Code Playgroud)

现在当我们有了这些东西时,我们将创建以下 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);
    }

}
Run Code Online (Sandbox Code Playgroud)

我们还需要导入包。你应该在你的项目中使用哪个选项,或者如果选项不是听,那么正确的方法是什么?

选项1

将所有模块包命名为与模块名称相同的名称: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;
Run Code Online (Sandbox Code Playgroud)

选项 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;
Run Code Online (Sandbox Code Playgroud)

选项 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;
Run Code Online (Sandbox Code Playgroud)

欢迎所有反馈、建议等。先感谢您!

Kei*_*ith 2

很高兴您考虑了不同的选项,因为模块命名没有事实上的标准;这是个人喜好的问题。只要您保持一致并保持模块名称简洁,并遵循 groupID 和 artifactID 的 Maven命名约定,您就可以开始了。

无论如何,我认为#1 是最好的选择。一般来说,尝试将 Java包与 Maven groupIDartifactID进行比较是一个好方法。