将 Maven 用于具有外部依赖项的客户端-服务器项目

Using Maven for a client-server project with external dependencies

我正在开发一款分为 3 个项目的游戏:客户端、服务器和公共项目。到目前为止,我一直依赖 Eclipse 来处理构建过程,但随着我的项目变得越来越复杂,我正在考虑使用 Maven(请参阅我的 previous question)。我已经开始研究这个问题,但我已经有很多问题了,而且问题越来越多了。

  1. 使用 Maven 构建此类项目的最佳方式是什么?我当前的每个项目都应该成为一个单独的 Maven 项目吗?或者公共项目应该成为客户端和服务器项目的父项目?还是我的 3 个项目都应该成为一个巨大的超级项目?

  2. 我的客户端项目依赖于几个外部 JAR 文件;我如何在 Maven 中设置这种依赖关系?文档建议我需要一个 groupId 和 artifactId 等。我在哪里可以找到这些?该系统是否依赖于在某些(远程或本地)存储库中编目的 JAR?

  3. 我在公共项目中有很多资源。我希望将它们作为构建过程的一部分放置在输出目录中, 而不是生成的 JAR 文件中的。我在某处读到 Maven 的 src/main/resources 目录中的所有文件都会自动复制到 JAR 文件中,所以我还能把它们放在哪里?

  4. 文档说明了如何在命令行中使用Maven来构建项目。如果我在 Eclipse 中开发,命令行是否仍然是 运行 Maven 的首选方式,或者像 M2Eclipse 这样的插件会实现同样的事情吗?

显然我对 Maven 的理解很薄弱,所以任何建议/解释/教程将不胜感激。

Common应该是一个简单的maven java项目。

其他的将取决于所使用的技术。如果它们都是 java 应用程序,即它们有一个启动它们的主要方法,那么它们也将是简单的 Maven java 项目。否则它们可能是 Web 项目或其他类型。 Maven 原型使这些类型变得简单。您可以在 eclipse 中创建新的 maven 项目时评估这些。

客户端和服务器项目都将包含 common 作为依赖项。

父项目的问题是关于使依赖项和其他 Maven 设置在多个项目之间保持一致。如果这对您来说是个问题,那么您可能希望所有 3 个项目都引用同一个父项目,以便您可以同时管理所有项目的这些设置。

剩下的问题是您是一次构建所有项目还是单独管理版本。如果您一次编译所有版本并一次更改所有版本,您可能需要一个包含所有其他模块的控制项目。

使父项目的子项目也成为该父项目的模块是很常见的。这应该适用于您相对简单的情况。

您的项目所需的外部库已添加为依赖项。最简单的方法是在 Maven Central 上搜索它们,然后将提供的 Maven pom 片段剪切并粘贴到您的 pom 文件中。如果它们不在 Maven Central 中,您应该能够在其他存储库中找到它们,请查看提供者文档以查看它们是否列出了存储库。

如果它们不在任何存储库中,您可以在本地存储库中手动安装它们。