2013-03-10 85 views
-1

对于这个问题的天真本质,我很抱歉,但我对Java开发很陌生,我一直在寻找一个答案。这里去...Java项目文件组织:新软件包vs子文件夹

我想根据目的或功能组织我的Java项目配置文件。换句话说,我想有一个Java项目组织这样

  • 应用
    • FXML
    • JDBC
    • GUI
    • 核心逻辑

这组织立即建议带有子文件夹的文件夹。我的问题是,NetBeans IDE将此范例用于子包而不是简单的子文件夹。

对我来说,这是有问题的原因是我想使用成员访问和可见性限制,仍然在我的项目文件之间进行操作。虽然这个特定的项目不会成为API,但我仍然不希望公开我所有的课程和班级成员。

特别是,如果我创建了一个...

protected final Client getClientByIndex(int idx) { ... } 

...在JDBC文件夹中的类文件,我会非常想还是能够把这个文件作为的一部分相同的包,因此可以在我的项目中访问其他类。但是,由于NetBeans仅使用子文件夹范例来描述子包,因此,除非我错过了某些东西,否则不会出现这种情况。 Java规范有关保护访问是在这个非常明确:

protected修饰符指定的成员只能在其自己的 包内被访问(如包私营),此外,通过的子类其课程在另一个 包。

所以......如果我想我的项目文件整理到子文件夹我必须要么做这样子包,要么让一切公共或子类(不理想对我来说),或...我得先把所有我的项目文件,我希望在相同的包到同一个文件夹(不理想)。

是否有一个IDE可以在构建时区分项目子文件夹和打算作为子包的文件夹?在我看来,这种区分应该可以通过构建文件中的适当描述符来实现。有没有一个IDE允许这个?这仅适用于自定义Ant文件吗?

+2

你有没有使用过Maven?它在Netbeans中提供本地支持,您可以轻松地组织与您正在查找的内容相匹配的多模块项目。 – Perception 2013-03-10 03:04:42

回答

3

您描述了一个多模块项目 - 一个由多个模块组成的项目,其中每个模块(通常)编译为它自己的* .jar。所有的IDE都以这种或那种方式支持这种方式(在intellij的思想下,你通过选择文件 - >新模块来添加模块),但创建这样一个项目的最佳方式是使用支持模块的构建系统,选择IDE导入项目。 maven是一个非常受欢迎的“构建系统”,可以轻松用于创建多模块项目。有关详细信息,请参阅maven书的chapter 6