【问题标题】:What is the project directory structure for a standalone Java SE application?独立 Java SE 应用程序的项目目录结构是什么?
【发布时间】:2012-06-15 01:29:11
【问题描述】:

独立 Java SE(基于命令行)应用程序的标准项目目录结构是什么?

src 文件夹将包含我所有的.java 文件,并以适当的组织包形式存在。除此之外,我还有 bin 文件夹,其中将包含我的 .class 文件。

我的项目中有属性文件和 XML 配置文件。我应该将它们放在哪个目录中?我应该创建一个名为com.myproject.config 的包并将所有.xml 配置文件放入其中吗?

我希望将依赖 jar 与我的最终包一起打包。那么我应该创建一个文件夹(比如名称lib)来保存所有这些.jar 文件吗?

【问题讨论】:

  • 您可以按照您的描述进行操作。没有限制也没有更好的接受方式。
  • 这在很大程度上取决于您使用的构建工具/IDE。请注意,如果自己打包,理论上几乎可以使用任何结构,而 IDE 通常会设置它更常用的结构。至于“创建一个名为com.myproject.config的包”是的,这似乎是合理的。
  • 我认为使用 Maven 构建您的项目是一个不错的选择。
  • BTW - 这个问题真的更多是关于如何将构建的应用程序部署给最终用户吗?它是什么类型的应用程序? (例如桌面、命令行、系统托盘的东西……?)
  • 我在问题中编辑了“命令行”,但我的第一个问题的答案仍然不清楚。 “这个问题真的更多地是关于如何部署构建的应用程序给最终用户吗?” 如果不是,那么这个问题的答案似乎是'使用任何适用的结构你”。

标签: java deployment software-packaging


【解决方案1】:

src/com.enterprise_name.project_name. Main.java(主类)

src/com.enterprise_name.project_name.model.(这里是所有模型类)

src/com.enterprise_name.project_name.view.(这里是所有视图类,JFrame、Jdialog 等)

src/com.enterprise_name.project_name.view.resources.(这里是视图中使用的所有文件和图像*note

src/com.enterprise_name.project_name.controller.(这里是所有控制器类)

lib/(这里是所有外部库 - 不要忘记添加到构建路径)

*note 如果您需要一些资源文件(xml、配置文件等),请创建一个包 .resources。在您需要的特定位置(模型、控制器、视图)

【讨论】:

    【解决方案2】:

    据我所知,Java 本身不存在标准项目结构。但是,各种工具和 IDE(如 Eclipse)确实具有标准结构。

    Maven,Java 的构建工具,另一方面,具有非常明确定义(默认)的项目结构。在那里,所有 Java 源文件都放在 src/main/java 文件夹中,所有资源文件(如您的配置文件)都放在 src/main/resources 中。

    这里有一个关于 Maven 的快速介绍,如果你还不知道的话:Maven in 5 Minutes


    关于您关于使用依赖项打包的问题,​​以下是我的一个 Maven POM 文件的片段,该文件使用 Assembly Plugin 创建包含所有依赖项的 JAR 文件:

    <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
            <archive>
                <manifest>
                    <mainClass>...</mainClass>
                </manifest>
            </archive>
        </configuration>
        <executions>
            <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    【讨论】:

      【解决方案3】:

      一个常用的结构如下:

      • src - 包含您的所有源文件,可能还有以下内容(可能位于文件夹树的下方):
        • resources - 包含属性文件等资源
        • 配置 - 与配置相关的所有内容
      • lib - 包含您的库的文件夹,可能放置在单独的子文件夹中
      • bin - 包含已编译的类

      【讨论】:

        【解决方案4】:

        我建议坚持使用默认的 Maven 布局(并且还使用 maven 作为构建工具)

        生产类/资源:

        src/main/java
        src/main/resources
        

        测试数据和类:

        src/test/java
        src/test/resources
        

        Maven 还可以使用所有必要的 jar 正确打包您的应用程序 (寻找maven组装插件)

        【讨论】:

        猜你喜欢
        • 2021-06-07
        • 2016-03-19
        • 2012-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 2014-11-13
        • 2021-08-29
        相关资源
        最近更新 更多