首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2013-11-09 
Maven学习笔记(二.作为依赖管理系统)我们现在开发Java应用,很多时候都会使用开源框架,例如Spring,Hibernat

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作为依赖管理的一个简单应用。?

热点排行