【发布时间】:2011-01-28 16:20:57
【问题描述】:
为什么 Maven 将资源保存在与 Java 源代码不同的“源文件夹”中?
根据我的经验,在 Java 中,资源文件大多被视为 Java 源文件,当“编译”时,只需要按原样与类一起复制,最终打包到 jar 中,并由 classloader 的方法getResource/getResourceAsStream,通过classpath。
我个人认为将资源文件与 Java 源分开是一种无用的复杂性。
- 你怎么看?
- maven 是否有充分的理由将资源与来源分开?
- 不使用
src/main/resources和src/test/resources并保持src/main/java和src/test/java中的资源使用 maven?
【问题讨论】:
-
这是一个主观的个人意见问题。你喜欢一种方式,别人喜欢另一种方式。什么选择是最好的这个问题没有很好的答案。
-
@Jesper,我明白你的意思,但是对于这种情况,我认为可以回答这个问题;答案是最好使用 maven 约定。在许多其他情况下,遵循约定是在环境上下文中做事的最佳方式,即使可能以其他非标准方式来做。例如,linux config文件最好放在
/etc,word docs最好放在My Documents,README文件最好放在顶层项目目录等 -
...(空间不足,所以在这里继续评论)...我认为有理由认为遵循约定是“最好的”,除非有某种理由可以提供更多价值来打破标准.在这种情况下,根据经验,我同意@Nishant 在下面的回答,我想不出任何足够强大的理由来证明打破 maven 惯例是合理的。
-
@Dave:我认为这里的问题主要不是关于是否最好遵循他们的约定,而是更多关于他们为什么选择它作为约定而不是像传统的“更简单”的东西单一源文件夹。
-
我同意最好遵循约定。但是在 maven 引入将资源放在一边的约定之前,约定是将它们与源文件一起保存。所以,如果最好遵循现有的约定,如果它没有带来任何优势,为什么 maven 引入一个新的?我认为在您的项目中拥有 4 个或更多源文件夹并不会使工作更轻松。 @ColinD:完全正确。
标签: java maven layout resources