4.7. 添加资源

本项目依赖于两个 classpath 资源: Main 类通过 classpath 资源 log4j.preoperties 来配置 Log4J , WeatherFormatter 引用了一个在 classpath 中的名为 output.vm 的 Velocity 模板。这两个资源都需要在默认包中(或者 classpath 的根目录)。

为了添加这些资源,我们需要在项目的基础目录下创建一个新的目录—— src/main/resources。 由于任务 archetype:create 没有创建这个目录,我们需要通过在项目的基础目录下运行下面的命令来创建它:

$ cd src/main
$ mkdir resources
$ cd resources

在这个资源目录创建好之后,我们可以加入这两个资源。首先,往目录 resources 加入文件 log4j.properties

Example 4.9. Simple Weather 的 Log4J 配置文件

# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=INFO, CONSOLE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r %-5p %c{1} %x - %m%n

这个 log4j.properties 文件简单配置了 Log4J ,使其使用 PatternLayout 往标准输出打印所有日志信息。 最后,我们需要创建 output.vm ,它是这个命令行程序用来呈现输出的 Velocity 模板。 在 resources 目录创建 output.vm

Example 4.10. Simple Weather 的 Output Velocity 模板

*********************************
 Current Weather Conditions for:
  ${weather.city}, ${weather.region}, ${weather.country}
  
 Temperature: ${weather.temp}
   Condition: ${weather.condition}
    Humidity: ${weather.humidity}
  Wind Chill: ${weather.chill}
*********************************

这个模板包含了许多对名为 weather 的变量的引用。 这个 weather 变量是传给 WeatherFormatter 的 那个 Weather bean, ${weather.temp} 语法简化的表示获取并显示 temp 这个bean属性的值。 现在我们已经在正确的地方有了我们项目的所有代码,我们可以使用 Maven 来运行这个样例。