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

Nic*_*cue 42 maven-2

我想在我的Maven项目中放置一个配置文件.查看标准目录布局,有两个看似合理的地方," src/main/resources"和" src/main/config".有人可以解释这些之间的区别,并解释你什么config时候放入什么东西resources

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

一些谷歌搜索发现这个人有同样的问题,但答案似乎是矛盾的,而不是非常具有说服力.

Nic*_*cue 51

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

" 这是所有的理论......也许在编写文档时,参与Maven开发的人认为有一个src/main/config目录可能是有用的,因此它包含在文档中,但因为它从未在代码中实现,它今天没有被使用. "

" 目录 [src/main/config] 没有显示在类路径上,因此应用程序或测试类无法读取其中的任何内容. "

所以只需使用src/main/resources.

注意:我不知道这是否属实(我是问题提问者),但这可以解释为什么Web上有这么多人推荐src/main/resourceslog4j.properties.如果人们同意这是正确的答案你可以告诉我(评论或投票)我把它放在这里是为了节省其他人的打字.

  • 我使用src/main/config来保存我不想打包到目标中的配置项,比如JBoss配置脚本​​. (2认同)

Bor*_*vić 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>
Run Code Online (Sandbox Code Playgroud)

  • 无论何时你需要明确地向Maven配置提供一个目录,你都会做一些非标准的事情.我个人把log4j.properties等文件放在src/main/resources中,它"正常工作". (6认同)
  • 我同意这个解决方案.默认情况下,您放在`src/main/resources`中的内容将成为jar文件的一部分.如果你想让你的配置文件在你的罐子外面生活*那么我相信使用`src/main/config`会更有意义.只是我的两分钱. (6认同)
  • @Nick你可以遵循自己的规则,但src/xxx/resources确实是实际配置文件的标准位置. (4认同)

Bri*_*ace 5

列入src/main/configMaven的标准目录布局已被删除,部分原因引起的混乱src/main/configsrc/main/resourcesJIRA票证中src/main/config实际上引用了这个非常有堆栈溢出的问题,用于从Maven的标准中删除

简短答案:src/main/resources请勿使用src/main/config。这是(新的)Maven方式。