Java 多模块项目。包括:父模块和子模块:客户端、共享、服务器。如何?
我想有多模块的web应用程序项目。有一个包含3个子模块的父模块: 客户端、共享、服务器 我想用maven来构建它 我想客户端可以访问:服务器和共享模块代码 我想共享可以访问的:服务器模块代码 我无法实现的依赖性Java 多模块项目。包括:父模块和子模块:客户端、共享、服务器。如何?,java,build,Java,Build,我想有多模块的web应用程序项目。有一个包含3个子模块的父模块: 客户端、共享、服务器 我想用maven来构建它 我想客户端可以访问:服务器和共享模块代码 我想共享可以访问的:服务器模块代码 我无法实现的依赖性 client -> shared -> server client -> server 它可以用maven构建吗 以下是我目前的POM: 家长: <modules> <module>server</module> &
client -> shared -> server
client -> server
它可以用maven构建吗
以下是我目前的POM:
家长:
<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>server</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
共享没有依赖项
服务器:
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
编辑
我希望我的共享模块能够访问服务器模块代码,但当我在共享模块中向服务器模块添加依赖项时,我得到了一个关于循环依赖项的错误,无法生成项目。我的问题是如何在所有子模块中准备POM来实现这一点?正如您所看到的,共享模块现在没有任何依赖项 脱离maven上下文在您的体系结构中存在循环依赖性问题。
没有两个模块可以相互依赖,因为在这种情况下,您无法构建它们。您可以做的是创建另一个模块,它的名称可能与真正的共享模块类似,共享模块和服务器模块都依赖于此,或者您可以重新排列您的共享模块,使其不依赖于任何模块,而其他模块依赖于它。正如我所知,依赖关系是可传递的 因此: 客户:
<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>server</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
服务器:
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
<dependencies>
<dependency>
<groupId>pl.derp</groupId>
<artifactId>shared</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
我倾向于让生活变得更简单,只需要两个模型模块,代理和客户端代码 e、 g 我不能完全肯定你能用三个模块做到这一点,因为它们相互依赖
FWIW我们有用于数据库、模型和客户端的模块gwt web client,因为它可以分离主要关注点并保持依赖关系正常。您的设置看起来不错,你的问题到底是什么?在模块之间建立适当的依赖关系,就是这样…是的,问题是什么?我希望我的共享模块能够访问服务器模块代码,但当我在共享模块内向服务器模块添加依赖关系时,我收到一个关于周期依赖关系的错误,无法构建项目。我的问题是如何在所有子模块中准备POM来实现这一点?正如您所看到的,共享模块现在没有任何依赖项。为什么要为代理将共享模块和客户端模块一分为二?我认为这样的拆分对于希望在客户机和服务器之间共享的java逻辑等是有意义的。然而,代理是用于通信的,所以只有servlet/web感兴趣?所以,如果客户端可以访问服务器,而服务器可以访问共享,这意味着客户端也可以访问共享?不幸的是,这不起作用,因为我无法从共享模块内部访问服务器类。我遇到一个错误:实体无法解析为类型共享/代理代码需要查看服务器代码,因此我认为这不起作用。您能给出一个模块列表及其依赖项的示例吗?