Maven使用(一)—— 依赖管理

pom.xml:

Maven是一个很好用的工具,工具这东东就要有一个配置文件之类的。pom.xmlMaven项目的核心,也可以理解为Maven在一个项目中配置文件。当我们新建一个Maven工程的时候,生成的pom.xml文件大概是这个样子:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.rabbit.blog</groupId>
  <artifactId>springdemo</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

project是所有pom.xml的更元素,说明这是一个Maven工程,它声明了一些namespacexsd文件等等,这个我们不必太关心。

 

project内部会有如下几个标签:

modelVersionPOM模型版本,Maven3只能是4.0.0

groupId:组名,类似Java包名定义规范中说的那个前缀(公司.项目)。

artifactId:当前项目在组中的唯一Id

version:版本号,这个很容易理解,而有些版本后边接-SNAPSHOT说明是开发版本。

 

现在我们就可以通过m2eclipse或者编写XML的方式向我们的项目中添加所需的jar包了。

 

在新建Maven工程的时候,最后一步就是添加工程的jar,当然,我们可以忽略这个步骤,在工程建好之后或者要使用的时候再添加jar包:

 

我们可以在工程上右键,选择Maven>Add Dependency

 
然后搜索想要的jar

 

 

添加成功,我们可以再看一下pom.xml文件,这时候我们发现文件中多了类似如下的内容:

<dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>3.2.2.RELEASE</version>
  	</dependency>
</dependencies>

这里的dependencies标签表明项目依赖的开始,其中可以有多个dependency标签,dependency中只要指定jar包的groupIdartifactIdversion即可,这三个属性也称作一个项目的基本坐标,也就是说它们的组合对每一个项目来说在整个Maven库中必须是唯一的。

 

而在项目的Maven Dependencies下依赖到我们新加入的jar包。当然,有时候你会发现加入的jar包多于你依赖的,其实这是Maven帮你将你所添加的jar包依赖的所有jar包全部引入了,是不是很方便。我们可以通过Maven Pom Editor打开pom.xml文件,在Dependency Hierarchy下就可以清楚的看到jar包的依赖情况:

 

 

当然我们也可以手写pom文件,有时反而效率更高,比如像Spring所依赖的jar包就比较多,很多jar包只是artifactId有所不同,完全可以通过手写的方式进行依赖添加。

 

对于version,像Spring这种需要jar包很多并且版本很多的框架来说,所有jar包版本统一应该是一个基本的需求,那对于这种统一的属性值我们就可以提出成为一个变量,这样也方便统一管理和修改。我们在dependencies标签之上再加入如下内容

  <properties>
  	<spring.version>3.2.2.RELEASE</spring.version>
  </properties>

 

然后将依赖中的version替换成变量的形式:

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
</dependency>

 

Ok,现在Maven的依赖功能已经介绍完了,是不是很方便而且很简单。

猜你喜欢

转载自z-rabbit.iteye.com/blog/1864730
今日推荐