多模块项目。包括:parent 模块和子模块:客户端、共享、服务器。如何?

Multi module project. Consist of : parent module and submodules: client, shared, server. How to?

我想要一个网络应用程序的多模块项目。有 parent 个包含 3 个子模块的模块:

client, shared, server.

我想用 maven 构建它。

我想 client 可以访问:servershared 模块代码。

我想 shared 可以访问:server 模块代码。

我要实现的依赖关系

client -> shared -> server
client -> server

可以用maven构建吗?

这是我当前的 poms:

parent:

<modules>
    <module>server</module>
    <module>shared</module>
    <module>client</module>
</modules>

客户:

<dependencies>
    <dependency>
        <groupId>pl.derp</groupId>
        <artifactId>shared</artifactId>
        <version>${project.version}</version>
    </dependency>
    <dependency>
        <groupId>pl.derp</groupId>
        <artifactId>server</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

共享没有依赖关系

服务器:

<dependencies>
    <dependency>
        <groupId>pl.derp</groupId>
        <artifactId>shared</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

编辑

我想让我的 shared 模块能够访问 server 模块代码,但是当我在 shared 模块内向 server 模块添加依赖项时,我收到有关循环依赖项的错误,无法构建项目。我的问题是如何在所有子模块中准备 poms 来实现这一点?如您所见,shared 模块现在没有任何依赖项。 –

没有 Maven 上下文,您的体系结构中存在循环依赖性问题。 没有两个模块可以相互依赖,因为在那种情况下你无法构建它们。您可以做的是创建另一个模块,其名称可能类似于 "real-shared-module" 并且共享模块和服务器模块都依赖于该模块,或者您真正重新排列共享模块,使其不依赖于任何模块,其他模块和其他模块依赖于它.

据我所知,依赖关系是可传递的

所以:

客户:

<dependencies>
    <dependency>
        <groupId>pl.derp</groupId>
        <artifactId>server</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

服务器:

<dependencies>
    <dependency>
        <groupId>pl.derp</groupId>
        <artifactId>shared</artifactId>
        <version>${project.version}</version>
    </dependency>
</dependencies>

我倾向于尝试让生活更简单,并且只有两个模块(用于模型、代理和客户端代码)。

例如

model (maven project)
webclient (maven project)
    shared (package)
    server (package)
    client (package)

由于相互依赖,我不完全确定你可以用三个模块来完成。

仅此而已,我们有用于数据库、模型和客户端(gwt 网络客户端)的模块,因为它拆分了主要关注点并保持依赖关系健全。