迁移项目到Maven,在哪里放置配置文件夹

时间:2016-07-06 20:09:07

标签: java maven config

我最近将我的javafx迁移到了maven。它启动并正常工作,但我无法弄清楚在哪里放置配置文件夹以及如何说它包含它的maven。

在我将项目转换为maven之前,结构看起来像这样:

  

| -src
      | -lib
      | -config

现在结构看起来像这样:

  

| -src /主/爪哇/ my.super.program
      | -src /主/资源/ my.super.program
      | -lib
      | -config

我用

尝试了
 <resource>         
    <directory>config</directory>
    <includes>
      <include>*.xml</include>
    </includes>
  </resource>

但这没效果。

在main.java中,我声明了所需的配置文件。例如:

  

private final String configPath ='config / config.xml';        private final String accountPath ='config / account.xml';

如何包含config文件夹并告诉maven使用它?

2 个答案:

答案 0 :(得分:2)

默认情况下,放在src / main / resources中的所有内容都会添加到构建的jar文件中。或者,您可以创建自己的maven模块来保存配置。同样,您必须将它放在src / main / resources

如果决定创建一个包含配置的专用模块,则必须将其添加到上一个模块的依赖项中。最好是编译时依赖(这是范围)。

答案 1 :(得分:-2)

我希望这个答案不会让你感到困惑,如果确实如此,可能只是寻求一个更简单的解决方案。

Jars不是存储可变配置的好地方。您只能在jar文件中放置默认配置。 jar文件不可写,因此如果jar文件在jar中,则程序无法覆盖配置以更新它。

对于需要用户特定配置的应用,我倾向于将配置存储在$USER_HOME/.myapp目录中。使用文件系统进行配置而不是数据库或java首选项API的优点是可以使用标准文本编辑器轻松查看和编辑配置。

确定应用程序配置的主目录的示例代码:

String configHome = System.getProperty("myapp.home", 
    System.getProperty("user.home") + "/.myapp"
);

您可以从jar文件中访问默认配置的资源,并将它们复制到文件系统上的文件中。然后,用户可以手动编辑文件系统上的文件以配置您的应用程序。或者,您可以提供为用户创建的自定义UI,以修改文件中的信息。

这种方法的一个例子是在这个OsiamHome类中,这是我见过为Java应用程序设置配置的最好方法之一(这是一个服务器应用程序,但一般原则可以用于客户申请)。 osiam引用是一个Spring应用程序,因此它受益于Spring提供的一些配置支持,特别是PathMatchingResourcePatternResolver,它有助于递归搜索jar以查找应用程序的所有默认配置资源。

但是,您可能不需要基于Spring的方法提供的额外功能。相反,您可以在默认配置中的所有文件的代码中保留一个列表,并将文件放在源树中的/resources/config目录中。构建过程将默认配置复制到您的jar文件中以进行部署。运行应用程序时,如果文件系统上的config目录不存在,则应用程序可以从jar文件中读取默认配置资源,并将配置资源复制到文件系统上的文件。然后可以根据需要修改和更改配置文件。

管理应用程序jar外部配置的其他一些选项是:

  1. 将配置信息放在数据库中或
  2. 使用Java preferences API
  3. 使用打包系统,例如rpm或(可能)javapackager工具或javafx maven plugin,将默认配置捆绑到本机部署包中。本机操作系统部署软件可以提取配置并将其复制到您指定的位置。通常,此位置将是操作系统的标准配置位置,例如Linux上的/etc/myapp用于系统范围配置,或$USER_HOME/.myapp用于特定于用户的配置。