包结构中的非java文件

包结构中的非java文件,java,Java,我们有一个开发人员,他习惯于在存储库中src/java文件夹下的java包中提交非java文件(xsd、dtd等)。诚然,这些都是与该包相关的文件,但我只是不喜欢在src文件夹中看到非java文件 这是我应该习惯的一种常见做法,还是我们通过像这样维护这些文件来做一些奇怪的事情?这很常见,你可以在非常流行的框架中找到它,例如用于各种模式的xsd文件。此外,人们通常将hibernate映射文件与模型类放在同一个包中。有许多jar库使用相同的做法。 我认为这是可以接受和舒适的。我认为这是常见的,只要文

我们有一个开发人员,他习惯于在存储库中src/java文件夹下的java包中提交非java文件(xsd、dtd等)。诚然,这些都是与该包相关的文件,但我只是不喜欢在src文件夹中看到非java文件


这是我应该习惯的一种常见做法,还是我们通过像这样维护这些文件来做一些奇怪的事情?

这很常见,你可以在非常流行的框架中找到它,例如用于各种模式的xsd文件。此外,人们通常将hibernate映射文件与模型类放在同一个包中。

有许多jar库使用相同的做法。
我认为这是可以接受和舒适的。

我认为这是常见的,只要文件是必要的。当人们开始提交源代码中不需要的文件时,会出现问题,例如设计规范或随机文本文件。

这是非常常见的,甚至是推荐的,只要它是合理的。一般来说,当它是一个静态资源(专有格式的DTD+XSLT、预制脚本等)时,它是合理的,但当文件可能由第三方(如IP/geographic location database dump)更新时,它就不合理了。

这当然很常见,但令人难以置信的懒惰和草率。当我看到它时,我的皮肤会蠕动

使用诸如构建产品之类的工具,您可以轻松、清晰地进行分离


Eclipse捆绑包也可以类似地分开。

我认为如果您认为“src”并不是专门指“源代码”,那么就更容易了。将其视为编译时和/或运行时程序所需资源的

编译或构建活动的产品不应该出现在这里

诚然,与大多数事情一样,例外情况也可能适用:)

更新:
就我个人而言,我喜欢进一步分解src,并为其下的每种资源类型提供子目录。其他人可能会喜欢更高级别的划分。

将与代码紧密相关的非Java(或其他语言)文件放在不同的位置的问题在于知道在哪里可以找到它们。这是可能的标准化的位置,然后理论上每个人都会知道去哪里,做什么。但我发现在实践中这种情况并没有发生

想象一下,你的应用程序在5年或10年后仍由一组初级-中级开发人员维护,他们现在不在公司工作,也永远不会与任何现在在你项目上工作的人交谈。将与源代码紧密链接的文件放在源代码包结构中可以使它们的工作更轻松


我是尽可能在合理范围内消除歧义的大力支持者

在Eclipse中,有一个包含java类的src文件夹和一个配置文件夹(作为源文件夹而得天独厚)对我们来说效果很好包含属性文件等。然后它们都放在输出文件夹中,可以在类路径中找到,同时仍然在Eclipse中的单独文件夹中

将所有辅助文件放在源代码旁边的好处之一是,这些第三方库和源代码之间保持了版本一致性。如果您需要返回并调试特定版本,您可以提取整个source+config集合,并使其都是相同的版本

也就是说,我将它们放在
$project/config/
目录或类似目录中,而不是放在
$project/src/java
本身中。它们不是源代码,实际上也不是java,所以将它们放在那个目录中是一种误导


但是,当你真正开始认真思考时,这是一个个人风格的问题。没有“正确”的答案,你应该和那些团队成员谈谈,理解他们为什么做出这个决定。用这条线索作为证据来支持单方面的决定可能不会很好

很好的观察。关键词确实是“静态的”。不要忘记Javadoc工具在每个包中都明确支持“doc files”目录。是的,我知道这些。这些是我认为必要的文件。我喜欢信息靠近需要的地方:)我想这也是一个很好的解决方案。我通常会在特定的视图中使用一个过滤器,以避免查看我当时不关心的资源。