我注意到很多项目都有以下结构:
我目前使用以下约定(因为我的项目是100%java):
我目前没有使用Maven,但我想知道这是否是Maven约定,或者是否还有其他原因。有人可以解释为什么第一个版本如此受欢迎,如果我应该采用这个新的约定?
克里斯
答案 0 :(得分:51)
主要好处是将test
目录作为src
的子目录,其目录结构与main
中的目录结构相同:
RootLevelPackageClass
的所有包私有方法都是可见的,即可从TestRootLevelPackageClass
开始测试。由于测试代码也是源代码,因此它应位于src
目录下。
答案 1 :(得分:23)
是的,这是Maven惯例。
即使您的项目是100%Java(与Maven btw一样),您经常会有资源文件(根据Maven惯例转到src/main/resources
),或Web应用程序,或者......所有这些都很容易融入Maven系统。
如果您对当前的构建系统(无论是什么)感到满意,则没有理由切换到Maven。否则,或者如果开始一个新项目,您可以评估您的选项,包括Maven。
答案 2 :(得分:12)
其他人已经告诉过你这是Maven的惯例,我会回答你的问题:
绝对没有。当然,将代码片段分开来分隔根文件夹是有益的,但通常你可以用
实现相同的功能代替。事实上,这是Maven做的一件大事,实际上非常错误:它想要将二进制内容添加到源代码存储库,这仅用于文本内容!所有二进制内容都应在源代码存储库之外进行管理,包括Web应用程序中的图像等等。
但是好吧,我们假设你已经决定住在有点臭的Maven生态系统中;那么你当然应该尽可能严格遵守Maven惯例。
答案 3 :(得分:9)
它是一个Maven会议。
Maven基于Convention over configuration范例。这意味着:如果您不遵循此约定,则必须配置源所在的位置。这是恕我直言的主要好处。
答案 4 :(得分:4)
是的,这是一个maven惯例,但即使你不使用maven,使用它也有好处:
虽然我不认为你应该只是切换到开关,但是在开始一个新项目时,没有理由不使用它 - 除非你在哲学上不同意它如何破坏代码。