如何从头构建自包含java程序的目录结构?

如何从头构建自包含java程序的目录结构?,java,game-development,self-contained,Java,Game Development,Self Contained,我正在用java编写我的第一个2D游戏。我正在用Atom编写代码。我在Mac上从终端编译并运行代码。到目前为止,游戏运行得非常好!但我担心我的项目结构不正确,到时候无法部署它。我想知道为一个项目(比如基于java的2D游戏)构建目录结构的正确方法,理想情况下,从头开始 我暂停游戏制作,以确定结构。 我尝试使用LibGDX作为打包项目的一种方法,然后将其作为Gradle项目导入Eclipse。我突然发现,围绕着我曾经简单的项目,我有一个巨大而不清晰的目录结构。我觉得这项任务并不比自己从头开始构建项

我正在用java编写我的第一个2D游戏。我正在用Atom编写代码。我在Mac上从终端编译并运行代码。到目前为止,游戏运行得非常好!但我担心我的项目结构不正确,到时候无法部署它。我想知道为一个项目(比如基于java的2D游戏)构建目录结构的正确方法,理想情况下,从头开始

我暂停游戏制作,以确定结构。 我尝试使用LibGDX作为打包项目的一种方法,然后将其作为Gradle项目导入Eclipse。我突然发现,围绕着我曾经简单的项目,我有一个巨大而不清晰的目录结构。我觉得这项任务并不比自己从头开始构建项目简单。此外,我无法从LibGDX提供的这个自动生成的目录结构中运行任何简单的java代码,而LibGDX现在位于Eclipse中。我更喜欢用Atom编写所有代码,并从终端编译和测试代码,必要时再从终端创建适当的JAR

我决定简化手头的任务并返回到Oracle文档,并且我确定我试图构建的是一个自包含的java应用程序。含糖的但是Oracle文档似乎没有深入讨论此类项目所需的必要目录结构背后的逻辑。它们告诉您您需要的两个主要组件是应用程序的资源,.java文件、图像和音频等,以及JRE的副本,以便用户在执行程序时拥有玩游戏所需的一切。我只是对如何使用提供的信息设置这个目录结构没有信心


我想克服这个问题,这一切应该如何组织?这样我就可以继续开发游戏了。提前感谢您阅读并提供反馈。

构建Java项目的行业标准是使用Maven或Gradle之类的工具。这两种工具都能自动处理所有源代码、资源文件等的争用,并且都有系统可以使从IDE或命令行导出jar文件变得容易。本质上,它们允许您指定您希望java项目如何构建的任何东西,也可以做C++项目,然后提供一个抽象的命令行接口来构建项目。p> 需要注意的是,许多开发人员并不认同您在没有IDE的情况下使用Java的偏好。虽然这本身并不是一个问题,但当您希望与将使用IDE的其他人一起工作时,它就会成为一个问题。Gradle和Maven都使这变得容易,因为几乎所有的IDE都能很好地与Gradle和Maven项目配合使用。出于这个原因,大多数FOSS Java项目使用这些系统中的一个,通常是渐变的,以允许不同的开发人员使用他们首选的IDE


您还表示希望完全理解构成项目的一组文件。对于这一点,Gradle可能是你最好的选择,因为它的教程很好地解释了这一点。它比普通Java项目更复杂,但对大多数开发人员来说是值得的,因为您可以获得非常简单和表达性的工具,例如3行Gradle配置,可以创建一个jar导出,以及使用许多开发堆栈的能力,例如IDE、命令行和持续集成,而只需花费很少的学习时间。Gradle也是当前最流行的不依赖IDE的Java构建工具。Maven的行为更像一个黑匣子,但仍然有Gradle的许多优点。如果你想学习Gradle,他们是一个很好的起点。

谢谢john01dav。我能够按照您建议的Gradle入门指南中提供的步骤进行操作,并且我能够构建目录结构并运行一个简单的“Hello World Program”Java程序,只使用Gradle命令。它为我指明了正确的方向。我是否能够按照自包含java应用程序模型的要求,将JRE的副本存储在build.gradle文件的存储库中?我假设JRE将被视为一个依赖项,我需要的存储库类型将是一个平面目录存储库,这样它将存储在我的根应用程序文件夹中的某个位置,以便在用户启动我的游戏时使用。Gradle似乎有助于构建我的程序,但Oracle使用Ant任务来导入JRE。我假设Gradle也可以这样做。@ McGoRoST我主要是C++程序员,所以我不知道Gradle的所有细节,但是可能有Gealle输出包含JRE和应用程序JAR的ZIP。我会看看这些教程,或者问另一个问题,以获得更多关于如何做到这一点的细节。一般来说,在构建应用程序时,最好让构建系统导入所有依赖项,包括JRE,而不是将它们包括在内 n应用程序的存储库或gradle项目。