Maven学习笔记(二.作为依赖管理系统)

我们现在开发Java应用,很多时候都会使用开源框架,例如Spring,Hibernate,log4j等等,这样我们的项目就需要把这些开源的jar导入我们的项目中。以往,我有2种做法引入这些包:

 

1. 把jar直接放入项目中,JavaSE项目自己建立一个libs目录,用来放置jar包,Web项目放入WEB-INF/lib下面

2. 在自己的电脑新建一个文件夹,专门用来存放各类jar包,项目需要使用的时候通过创建user library引入项目中

 

这两种方法各有优点,也各有非常严重的缺陷:

第一种方法

优点:

我需要的包都在我的项目中,这个项目可以传给别人,也可以从一台pc传到另一台pc,几乎不需要其他工作,就能在新环境中跑起来。

缺点:

这样一来,项目就变得庞大了,很可能我只是写个ssh sample给别人看,写的代码就几十k,而引入所有jar后,就变成几十m了,有时需要把这样的项目放上cvs/svn上,传输也太庞大了。更何况,很多时候,项目中需要的jar,新环境中早已存在。

第二种方法

优点:

解决了第一种方法中项目太庞大的缺点,只要和团队成员约定library的命名规则,则可以在多个环境中传输。

缺点:

这种做法的缺点也是非常恐怖的,有时候,新环境中,根本没有相关jar包,程序就不能运行了;另外,这种做法是和自己相熟的团队中约定规则可行,万一另外有开发人员,他们有他们的命名规则,则乱了。

 

Maven的依赖管理功能,则能够很好地解决这样的问题。

在Eclipse中(已安装Maven插件),我们可以通过创建Maven project或者对创建的project右键点击->Maven->Enable Dependency Management,来使用Maven。这个时候,在project根目录下会有一个xml文件——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>cn.noside</groupId>
  <artifactId>maventest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
</project>

元素说明: 

modelVersion:pom文件的版本号,一旦有模块更改就会更新
groupId:项目组织的唯一标识

artifactId:项目唯一标识

version:项目版本号

除此之外还有其他元素,详细情况可参考http://maven.apache.org/ref/3.0.3/maven-model/maven.html

 

接下来,我会为项目增加spring的library。打开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>cn.noside</groupId>
  <artifactId>maventest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>2.5.6</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-aop</artifactId>
  		<version>2.5.6</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-test</artifactId>
  		<version>2.5.6</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-tx</artifactId>
  		<version>2.5.6</version>
  	</dependency>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-web</artifactId>
  		<version>2.5.6</version>
  	</dependency>
  </dependencies>
</project>

这样项目根目录会出现"Maven Dependencies"的目录,这样需要的包就被导入了。

特别注意的是,Maven通过groupId/artifactId/version来唯一标识依赖包,这里,我们不需要知道需要的包的路径在什么地方,Maven会根据我们的配置,在远程服务器寻找对应的包,放到本地,下次再用到这个包,就不需要再从远程下载了。

 

以上就是Maven作为依赖管理的一个简单应用。 

你可能感兴趣的:(java)