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

时间:2015-04-17 23:15:30

标签: java maven dependencies client-server

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

  1. 使用Maven构建此类项目的最佳方法是什么?我目前的每个项目都应该成为一个单独的Maven项目吗?或者,通常的项目应该成为客户端和服务器项目的父级?或者我的所有3个项目是否应该成为一个巨大的超级项目?

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

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

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

  5. 显然我对Maven的理解很弱,所以任何建议/解释/教程都会非常感激。

1 个答案:

答案 0 :(得分:1)

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

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

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

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

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

通常使父项目的子项目也是该父项目的模块。这应该适用于你相对简单的情况。

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

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