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

时间:2010-11-15 09:02:42

标签: maven-2

我想在Maven项目中放置一个配置文件。看the standard directory layout,有两个地方似乎合情合理,“src/main/resources”和“src/main/config”。有人可以解释这些之间的区别,并解释何时在configresources中放置内容?

在这种情况下,我正在查看的文件是ehcache.xml,但我的问题不是特定于ehcache,我对log4j.properties等感到好奇。

一些谷歌搜索发现了this person had the same question,但答案似乎是矛盾的,而且不是非常具有说服力。

4 个答案:

答案 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/configsrc/main/config的加入已被删除,部分原因是src/main/resourcessrc/main/resources之间造成的混淆。这个stackoverflow问题实际上是在Maven's standard directory layout中引用的。

简答:使用src/main/config而非{{1}}。这是(新的)Maven方式。

答案 3 :(得分:0)

如果你问我,用例非常简单。 (似乎src / main / config已被删除标准目录布局)

  • / src / main / resources继续进入jar,因此继续使用classpath
  • / src / main / config适用于您可能构建的程序集插件 zip文件:

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