如何将应用程序属性文件处理成 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 个不同文件夹中:
config.properties:这是进入项目根文件夹。
log4j.properties:这个放到项目的/src/文件夹中。
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"
我在使用 Ant.
创建 .jar 文件时遇到以下问题我有一个 IntelliJ 项目(但情况与任何 IDE 相同)。
这个项目使用一些 .properties 文件,这些文件放在项目本身中。所以我有以下结构(仅与 .properties 文件相关)。
PROJECT-NAME
|
|
|-------> src
| |
| |
| |-------> config (it is a package)
| | |
| | |
| | |-------> mailer.properties
| |
| |
| |-------> log4j.properties
|
|
|-------> config.properties
因此,正如您从前面的架构中看到的那样,我将 3 个 properties 文件放入项目的 3 个不同文件夹中:
config.properties:这是进入项目根文件夹。
log4j.properties:这个放到项目的/src/文件夹中。
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"