2010-11-15 62 views
41

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

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

google搜索的一点发现this person had the same question,但答案似乎矛盾的,而不是很认真。

+0

我想我找到了main/config目录的用例。我有几个配置文件可供选择使用,并且在类路径中无用。应用程序及其部署的容器的示例配置文件。我找不到任何其他地方给他们。 – akostadinov 2013-03-28 20:15:41

+0

这可能是一个适合eclipse插件配置文件(findbugs,checkstyle等)的好地方。我不希望捆绑在归档文件中。 – jbruni 2014-10-08 18:12:18

回答

47

http://www.mail-archive.com/[email protected]/msg90985.html 电子邮件交换说:

这是所有理论......也许一边写文档,有人参与Maven的开发认为这可能对于拥有src/main/config目录很有用,因此它被包含在文档中,但由于它从未在代码中实现过,所以它现在还没有被使用。

目录 [来源/主/​​配置] 不会在classpath中出现这样的应用程序或测试类 不能读取任何东西。

所以只使用src/main/resources

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

+1

这是正确的,只需使用'src/xxx/resources'就可以获得想要在类路径中获得的所有非源文件。当然,您可以决定添加其他目录,但您需要将特定配置添加到POM。 – 2010-11-15 20:25:18

+0

感谢您的澄清。我正在查看文档和[标准目录布局部分](http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html)没有提到这个:( – seneyr 2014-07-03 18:10:16

+2

我使用src/main/config来保存我不想打包到目标中的配置项,如JBoss配置脚本​​。 – jbruni 2016-11-04 23:16:49

7

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> 
+0

这对我来说似乎很明智,但你有参考吗?有各种电子邮件,例如http://markmail.org/message/lve4d2qzba2lritd说资源是log4j.properties – 2010-11-15 09:35:10

+0

的标准放置找不到任何。这只是一个常识。无论你把它放在哪里,只要确保它在类路径上,这样它就会被log4j库拾取。 – 2010-11-15 09:41:54

+0

谢谢。有没有一种标准的方式将这个目录添加到Maven下的类路径中? (我是一个新的maven用户) – 2010-11-15 09:45:42

0

用例很简单,如果你问我。/main/config此后已被删除标准目录布局)

  • /src目录/主/资源去到罐子,从而在类路径
  • /src目录/主/配置适用于装配的插件,你可以构造一个 zip文件:

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