在maven中,main / resources和main / config有什么区别?

我想把一个configuration文件放到我的Maven项目中。 看一下标准的目录布局 ,有两个看起来很明智的地方,“ src/main/resources ”和“ src/main/config ”。 有人可以解释这些之间的差异,并解释什么时候你会把东西在configresources

在这种情况下,我正在看的文件是ehcache.xml ,但我的问题不是ehcache特定的,我很好奇log4j.properties

有一点谷歌search发现这个人有同样的问题 ,但答案似乎矛盾,而不是很认真。

http://www.mail-archive.com/users@maven.apache.org/msg90985.html上的电子邮件交换说:;

这都是理论……也许在编写文档时,Maven开发人员认为有一个src / main / config目录可能是有用的,所以它被包含在文档中,但是因为它从来没有在代码中实现过,它今天没有被使用。

目录 [src / main / config] 不会显示在类path中,因此应用程序或testing类无法读取任何东西。

所以只需使用src/main/resources

注意:我不知道这是否是真实的(我是问题提供者),但是这可以解释为什么networking上有那么多人推荐使用log4j.properties的src/main/resources 。 如果人们同意这是正确的答案,你可以让我知道(评论或投票)我把它放在这里,以保存其他人的打字。

scr/main/resources是一个放置源代码使用的图像,声音,模板,语言包,文本和二进制文件的地方。 像excache.xml,log4j.properties,logback.xml和其他所有的configuration文件到src/main/config

添加到您的pom.xml

 <build> <resources> <resource> <targetPath>.</targetPath> <directory>src/main/config</directory> </resource> </resources> </build> 

由于src/main/configsrc/main/resources之间的混淆,导致在Maven的标准目录布局中包含src/main/config已被删除。 这个很好的stackoverflow问题实际上是在JIRA票据中从Maven的标准中删除src/main/config引用的 。

简短的回答:使用src/main/resources而不是src/main/config 。 这是(新)Maven的方式。

用例很简单,如果你问我。 (看来src / main / config已经被删除了标准的目录布局)

  • / src / main / resources进入jar,然后进入classpath
  • / src / main / config用于汇编插件,您可以在其中构build一个zip文件:

     hello-world.zip lib/ <dependencies> bin/ run.bat run.sh config/ config.properies