Java项目文件组织:新包与子文件夹

时间:2013-03-10 02:47:57

标签: java ant netbeans-7

我提前为这个问题的天真性质道歉,但我是Java开发的新手,我一直在寻找答案。这就是......

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

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

此组织会立即建议包含子文件夹的文件夹。我的问题是这个范例被NetBeans IDE用于子包而不是简单的子文件夹。

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

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

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

...在JDBC文件夹的类文件中,我理想的是仍然可以将此文件视为同一个包的一部分,因此可以访问我项目中的其他类。但是,由于NetBeans仅使用子文件夹范例来描述子包,因此除非我遗漏了某些内容,否则这似乎不可能。关于受保护访问的Java规范非常明确:

  

protected修饰符指定只能在自己的成员中访问该成员   package(与package-private一样),另外,由class的子类在另一个子类中   封装

所以...如果我想将我的项目文件组织成子文件夹,我必须将其作为子包,并将所有内容设为公共或子类(对我来说不理想),或者......我必须放置所有项目文件我希望在同一个包中放入同一个文件夹(不理想)。

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

1 个答案:

答案 0 :(得分:3)

您正在描述一个多模块项目 - 一个由多个模块组成的项目,其中每个模块(通常)编译成自己的* .jar。 所有的IDE都以这样或那样的方式支持这一点(通过选择文件 - >新模块,你可以通过intellij的想法添加模块),但是创建这样一个项目的最好方法是使用支持模块的构建系统并拥有你的选择IDE导入项目。 maven是一个非常流行的“构建系统”,可以很容易地用于创建多模块项目。有关详细信息,请参阅maven书的chapter 6