本项目依赖于两个 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 来运行这个样例。

