Maven入门篇(下)

来源:互联网 发布:windows光盘怎么安装 编辑:程序博客网 时间:2024/04/30 10:03
上一篇博文写了怎么安装配置和怎么在myeclipse里面使用maven,我的宗旨是先得会用,然后再去深入探究其核心内容。所以这篇文章在前一篇的基础上讲讲maven更深入的东西,主要介绍几个我们经常接触到的概念。

Maven 库

首次运行maven的时候,它会从 maven 默认的远程库(http://search.maven.org/) 下载的相关jar包。(注意一点,一般大公司都有自己定制的jar,所以并不是所有的包都是从这个默认库下载的)

POM (Project Object Model)

一个项目所有的配置都放置在 POM 文件中:定义项目的类型、名字,管理依赖关系,定制插件的行为等等。比如说,你可以配置 compiler标签,让它使用 java 1.7来编译。
在 pom.xml中,groupId, artifactId, packaging, version称为maven的坐标,它能唯一的确定一个项目。有了 maven坐标,我们就可以用它来指定我们的项目所依赖的其他项目,插件,或者父项目。
大项目一般会分成几个子项目。在这种情况下,每个子项目就会有自己的 POM 文件,然后它们会有一个共同的父项目。这样只要构建父项目就能够构建所有的子项目了。子项目的 POM会继承父项目的 POM。
Maven依赖管理
在 POM 中,依赖关系是在 dependencies部分中定义的。比如前一篇博文中,示例默认建了一个对junit的依赖,如下
  <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>3.8.1</version>      <scope>test</scope>    </dependency>  </dependencies>

这个例子很简单,但是实际开发中我们会有复杂得多的依赖关系,因为被依赖的 jar文件会有自己的依赖关系。那肯定有人会和我一样要问,那那些间接依赖的 jar文件怎么办?

不用担心,因为 maven 提供了传递依赖的特性,即 maven会检查被依赖的 jar 文件,把它的依赖关系纳入最终的依赖链中,也就是我们上面说的pom的依赖。这种依赖,在myeclipse里面还能以图形界面显示出来(打开pom文件的dependency Graph视角)。

这里我无意中发现了个网站(好像是在github上找某个开源软件源码和jar的时候找到的),http://mvnrepository.com/这里可以看到每个jar依赖的jar,同时还可以下自己想要的jar包(强烈鄙视那些把jar传到CSDN还要分的人!)
maven官网现在也也提供这个功能了,所以新手看哪个方便就用哪个吧。

在 POM 的 dependencies 部分中,scope 决定了依赖关系的适用范围。我们的例子中 junit 的 scope 是 test,那么它只会在执行 compiler:testCompile and surefire:test 目标的时候才会被加到 classpath 中,在执行 compiler:compile 目标时是拿不到 junit 的。
我们还可以指定 scope 为 provided,意思是 JDK 或者容器会提供所需的jar文件。比如说在做web应用开发的时候,我们在编译的时候需要 servlet API jar 文件,但是在打包的时候不需要把这个 jar 文件打在 WAR 中,因为servlet容器或者应用服务器会提供的。
scope 的默认值是 compile,即任何时候都会被包含在 classpath 中,在打包的时候也会被包括进去。

参考:http://www.oracle.com/technetwork/cn/community/java/apache-maven-getting-started-2-405568-zhs.html

0 0