4.8. 运行Simple Weather项目

使用来自 Codehaus Mojo 项目 的 Exec 插件,我们可以运行这个程序。在项目的基础目录下运行以下命令,以运行该程序的 Main 类。

$ mvn install
$ mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main
...
[INFO] [exec:java]
0    INFO  YahooRetriever  - Retrieving Weather Data
134  INFO  YahooParser  - Creating XML Reader
333  INFO  YahooParser  - Parsing XML Response
420  INFO  WeatherFormatter  - Formatting Weather Data
*********************************
 Current Weather Conditions for:
  Evanston, IL, US
  
 Temperature: 45
   Condition: Cloudy
    Humidity: 76
  Wind Chill: 38
*********************************
...

我们没有为 Main 类提供命令行参数,因此程序按照默认的邮编执行——60202。 正如你能看到的,我们已经成功的运行了 SImple Weather 命令行工具,从 Yahoo! Weather 获取了一些数据,解析了结果,并且通过 Velocity 格式化了结果数据。 我们仅仅写了项目的源代码,往 pom.xml 添加了一些最少的配置。 注意我们这里没有引入“构建过程”。 我们不需要定义如何或哪里让 Java 编译器编译我们的源代码,我们不需要指导构建系统在运行样例程序的时候如何定位二进制文件, 我们所需要做的是包含一些依赖,用来定位合适的 Maven 坐标。

4.8.1. Maven Exec 插件

Exec 插件允许你运行 Java 类和其它脚本。 它不是 Maven 核心插件,但它可以从 CodehausMojo 项目得到。想要查看 Exec 插件的完整描述,运行:

$ mvn help:describe -Dplugin=exec -Dfull

这会列出所有 Maven Exec 插件可用的目标。 Help 插件同时也会列出 Exec 插件的有效参数,如果你想要定制 Exec 插件的行为,传入命令行参数,你应该使用 help:describe 提供的文档作为指南。 虽然 Exec 插件很有用,在开发过程中用来运行测试之外,你不应该依赖它来运行你的应用程序。 想要更健壮的解决方案,使用 Maven Assembly 插件,它在Section 4.13, “构建一个打包好的命令行应用程序”中被描述。