4.5. 添加新的依赖

Simple weather 应用程序必须要完成以下三个任务:从 Yahoo! Weather 获取 XML 数据,解析 XML 数据,打印格式化的输出至标准输出。为了完成这三个任务,我们需要为项目的 pom.xml 引入一些新的依赖。 为了解析来自 Yahoo! 的 XML 响应,我们将会使用 Dom4J 和 Jaxen ,为了格式化这个命令行程序的输出,我们将会使用 Velocity ,我们还需要加入对 Log4j 的依赖,用来做日志。加入这些依赖之后,我们的 dependencies 元素就成了以下模样:

Example 4.3. 添加 Dom4J, Jaxen, Velocity 和 Log4J 作为依赖

<project>
  [...]
  <dependencies>
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.14</version>
    </dependency>
    <dependency>
      <groupId>dom4j</groupId>
      <artifactId>dom4j</artifactId>
      <version>1.6.1</version>
    </dependency>
    <dependency>
      <groupId>jaxen</groupId>
      <artifactId>jaxen</artifactId>
      <version>1.1.1</version>
    </dependency>
    <dependency>
      <groupId>velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.5</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  [...]
</project>


正如你从上面所看到的,我们在范围为 test 的 JUnit 依赖基础上又加了四个依赖元素。如果你把这些依赖添加到项目的 pom.xml 文件然后运行 mvn install ,你会看到 Maven 下载这些依赖及其它传递性依赖到你的本地 Maven 仓库。 我们如何找这些依赖呢?我们都“知道”适当的 groupIdartifactId 的值吗?有些依赖 (像 Log4J) 被广泛使用,以至于每次你需要使用它们的时候你都会记得它们的 groupIdartifactId。 而 Velocity, Dom4J 和 Jaxen 是通过一个十分有用的站点 http://www.mvnrepository.com 来定位的。 该站点提供了针对 Maven 仓库的搜索接口,你可以用它来搜索依赖。 你可以自己测试一下,载入 http://www.mvnrepository.com 然后搜索一些常用的类库,如 Hibernate 或者 Spring Framework 。当你在这上面搜索构件时,它会显示一个 artifactId 和所有 Maven 中央仓库所知道的版本。 点击某个特定的版本后,它会载入一个页面,这个页面就包括了你需要复制到你自己项目 pom.xml 中的依赖元素。 你经常会发现某个特定的类库拥有多于一个的 groupId,这个时候你需要通过 mvnrepository.com 来帮助确定你到底需要怎样配置你的依赖。