如何将应用程序属性文件处理成 Ant 构建脚本?

How to handle application properties file into an Ant build script?

我在使用 Ant.

创建 .jar 文件时遇到以下问题

我有一个 IntelliJ 项目(但情况与任何 IDE 相同)。

这个项目使用一些 .properties 文件,这些文件放在项目本身中。所以我有以下结构(仅与 .properties 文件相关)。

PROJECT-NAME
     |
     |
     |-------> src
     |          |
     |          |
     |          |-------> config (it is a package)
     |          |           |
     |          |           |
     |          |           |-------> mailer.properties
     |          | 
     |          | 
     |          |-------> log4j.properties 
     |     
     |
     |-------> config.properties

因此,正如您从前面的架构中看到的那样,我将 3 个 properties 文件放入项目的 3 个不同文件夹中:

  1. config.properties:这是进入项目根文件夹。

  2. log4j.properties:这个放到项目的/src/文件夹中。

  3. mailer.properties:这个是进入config包里面的/ src/ 项目文件夹.

在这个阶段,我创建了一个 build.xml Ant 脚本,它不会创建 config 包 并且不会'将我所有的属性文件放在正确的位置。

所以我的疑问是:如何处理这种情况?

我想我可以将 config 文件夹创建到 compile 目标中,然后在创建之前将属性文件复制到正确的位置使用 jar 目标的最终 jar 文件。

这是一个好的解决方案吗?我该如何处理这种情况?

将属性文件放在 JAR 中实际上是个好主意。但是将它放在 JAR 中的缺点是它会更难编辑(你必须将它从 JAR 中提取并放回)。

构建 JAR 文件时,只需将其与 class 文件一起包含。您可以使用 class Class 或 ClassLoader 中的方法 getResourceAsStream() 来读取 JAR 文件中的属性文件。例如,假设您的属性文件位于 JAR 文件的根目录中,那么您可以像这样在程序中读取它:

InputStream in = this.getClass().getResourceAsStream("config.properties");
Properties props = new Properties();
props.load(in);
in.close();

注意:关于您的属性文件的 "path" 是相对于您的主要 class 所在的位置。因此,如果您的 main 在包 "com.abc" 中并且属性文件是 config.properties,则在创建 jar 时将 config.properties 放在 "com" 之外,路径只是“/config.properties"