我想在Maven项目中放置一个配置文件。看the standard directory layout,有两个地方似乎合情合理,“src/main/resources
”和“src/main/config
”。有人可以解释这些之间的区别,并解释何时在config
和resources
中放置内容?
在这种情况下,我正在查看的文件是ehcache.xml
,但我的问题不是特定于ehcache,我对log4j.properties
等感到好奇。
一些谷歌搜索发现了this person had the same question,但答案似乎是矛盾的,而且不是非常具有说服力。
答案 0 :(得分:51)
http://www.mail-archive.com/users@maven.apache.org/msg90985.html的电子邮件交流 说:
“这是所有的理论......也许在编写文档时,参与Maven开发的人认为有一个src / main / config目录可能是有用的,所以它包含在docs中,但是因为它从未在代码中实现,它今天没有被使用。“
和
“目录 [src / main / config] 没有显示在类路径上,因此应用程序或测试类 无法阅读其中的任何内容。“
所以只需使用src/main/resources
。
注意:我不知道这是否属实(我是提问者),但这可以解释为什么Web上有这么多人推荐src/main/resources
来获取log4j.properties。如果人们同意这是正确的答案你可以告诉我(评论或投票)我把它放在这里是为了节省其他人的打字。
答案 1 :(得分:8)
scr/main/resources
是您放置源代码使用的图像,声音,模板,语言包,文本和二进制文件的地方。所有配置文件,如excache.xml,log4j.properties,logback.xml等都转到src/main/config
。
添加到您的pom.xml
:
<build>
<resources>
<resource>
<targetPath>.</targetPath>
<directory>src/main/config</directory>
</resource>
</resources>
</build>
答案 2 :(得分:5)
src/main/config
中src/main/config
的加入已被删除,部分原因是src/main/resources
和src/main/resources
之间造成的混淆。这个stackoverflow问题实际上是在Maven's standard directory layout中引用的。
简答:使用src/main/config
而非{{1}}。这是(新的)Maven方式。
答案 3 :(得分:0)
如果你问我,用例非常简单。 (似乎src / main / config已被删除标准目录布局)
/ src / main / config适用于您可能构建的程序集插件 zip文件:
hello-world.zip
lib/
<dependencies>
bin/
run.bat
run.sh
config/
config.properies