出处:http://www.fkdoc.com/html/program/java/javaweb/2010/0531/4066.html
很多初次接触开源项目的同学将项目下载到本地后,打开文件夹会看到
类似的一堆文件夹,感觉像是在咬刺猬一样,不知从何下手。那么这样的项目该怎么下手呢?其实这些文件夹就是这个项目的诸多模块,和电子运维的模块化是一样的。
打开其中一个模块,会发现这样一个文件pom.xml,这个pom可不是dota里飘逸的白虎mm,它是使用maven2构建项目的标志性文件(maven1是project..xml或者maven.xml)。
那么什么是maven呢?
从百度百科上可以查到:
Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具.
如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有有一个重复性更少却能同样完成该工作的方法。Maven便提供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页.
项目的主页地址为:http://maven.apache.org/
很久以前,我们提起构建项目,首先会想到ant,在项目里面建一个build.xml,然后写一大堆脚本,定义一堆任务。现在,另一款工具maven2越来越流行(为什么是maven2,而不是maven呢。。。嘿嘿,因为maven1实际上只是ant的一个扩展~),大有取代ant的趋势。他只需要简简单单的几行代码,甚至可以完全用工具来操作就能实现构建,很多开源项目诸如我们熟悉的struts、spring、hibernate都在新版本里使用了maven。
接下来,我们来简单讲解一下maven怎么用,最后以一个实例来结束本文。
(一)
maven的安装
打开http://maven.apache.org/download.html,选择自己需要的版本,这里我选择的是最新版apache-maven-2.2.1-bin.zip,下载后解压到D:\source\build\apache-maven-2.2.1。
在环境变量中添加M2_HOME,指向上面的解压路径。
在path变量下增加%M2_HOME%\bin;
这样maven就安装完成了,在dos窗口下输入mvn –version会看到如下内容
安装完成后我们可以对maven进行配置,打开%M2_HOME%\conf\setting.xml文件,找到<localRepository>,这是maven从网络上下载文件到本地要存放的位置,默认是
C:\Documents and Settings\Administrator\.m2,这个位置在c盘,个人建议最好还是改一下,原因大家都知道,这里我是将这个位置改到了
<localRepository>D:/source/build/apache-maven-2.2.1/repository</localRepository>也就是我的maven安装目录下的repository文件夹下。
这里也可以写成<localRepository>${M2_HOME}/repository</localRepository>这样的,maven2是可以识别的,不过如果你要使用eclipse插件的话还是不要这样,因为插件里面识别不了${M2_HOME}。
接下来我们认识一下maven2仓库文件夹的层次结构,打开repository文件夹,在没有用过maven之前它是空的,使用过后会出现很多我们熟悉的字样
![](/uploads/allimg/100531/0943292557-5.gif)
这些就是我们下载过的依赖包,我们以dom4j包来讲解层次结构
打开dom4j,一直到最底层目录,我们会看到这样几个文件
它为什么会是这样一个目录结构呢?原因就在pom文件中,打开dom4j-1.6.1.pom
我们看到这样的内容
对了,我们的目录结构就是和这里对应的。多查看几个包的目录结构,对比一下每个的pom文件,我们会发现这里的层次结构其实是这样的groupId/artifactId/version/,如果groupId中间有.号,也就是类似这种org.apache.struts,那么它的目录结构就应该是org/apache/struts/artifactId/version/,在version文件夹下面就是我们真正需要的文件了,这里的包命名也是有规则的,必须是artifactId-version.jar,按照这种理论我们就能得到dom4j在repository中真正的目录结构dom4j/dom4j/1.6.1/ dom4j-1.6.1.jar
另外针对我们常用的eclipse,idea等ide,maven也都有对应的插件,这里以eclipse为例说明。
Eclipse下的插件叫做m2eclipse,官方地址是http://m2eclipse.sonatype.org/,安装方法和其他插件相同。
在线安装地址http://m2eclipse.sonatype.org/sites/m2e
这里需要注意,m2eclipse针对eclipse3.2插件的地址已经失效,而我用的恰恰是3.2版,正好我硬盘上有myeclipse8.x,为了不必要的麻烦,我直接使用8.x,因为我记得好像是在7.5以后的版本中集成了一款插件maven4myeclipse来辅助maven开发。
(二)
使用maven创建java项目
在cmd下面运行
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javase –D packageName=org.jlqu1
会看到|
![](/uploads/allimg/100531/0943292146-8.gif)
需要注意:如果是第一次用maven创建项目,速度可能会有点慢,因为maven是基于插件的,很多插件都是使用的时候才会从maven的插件库里去下载,从上图中也可以看到有downloading字样。
这个pom文件中的内容,大家望文生义都能理解,我只解释一下version,这个值对应到我们运行mvn package命令后在target文件夹下面得到的
javase-1.0-SNAPSHOT.jar,
Maven有很多有用的命令,其中的mvn stie很有意思,运行成功后会在javase\target\下生成site文件夹,里面是一堆网页文件,打开index.html,是不是很熟悉呢?对了,他用apache官方的模板生成了一套关于我们自己项目的网站,很好玩~
Maven具体的命令,本文不作过多讲解,有兴趣的同学可以到官方网站看看,讲解非常详细。
有些同学可能想知道我们输入的命令到底是说明意思呢?
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javase –DpackageName=org.jlqu1
我来详细解释一下:
mvn是maven的命令
archetype:create表示创建一个项目,其中archetype是maven的一个插件,create是他的一个goal(maven插件的goal相当于ant的target)
-D是java用来设置属性的方式,请注意,它不是maven设置的。
groupId是项目所在的组名,你可以想象他就是org.apache…,这个组名主要有两个作用,其一是用来标识项目,其二是作为默认的包名,加入我们在上面的命令里没有输入–DpackageName=org.jlqu1,那么我们项目里的包就会使
com.jlqu。
artifactId就是所创建的项目名称,在本例中可以看到项目名称就叫做javase。
–DpackageName是指定包名。
如果需要将项目导入eclipse中,可以使用运行mvn eclipse:eclipse命令,完成后我们可以在项目根目录下看到熟悉的.classpath和.project两个文件。
使用maven还可以进行添加依赖包、进行单元测试等操作,这些我们将会在本文最后的实例中通过可视化工具进行讲解,有兴趣深入研究的同学可以去查一下每步操作对应的命令。
(三)
创建一个web项目
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javaweb -DarchetypeArtifactId=maven-archetype-webapp
对了,我们的目录结构就是和这里对应的。多查看几个包的目录结构,对比一下每个的pom文件,我们会发现这里的层次结构其实是这样的groupId/artifactId/version/,如果groupId中间有.号,也就是类似这种org.apache.struts,那么它的目录结构就应该是org/apache/struts/artifactId/version/,在version文件夹下面就是我们真正需要的文件了,这里的包命名也是有规则的,必须是artifactId-version.jar,按照这种理论我们就能得到dom4j在repository中真正的目录结构dom4j/dom4j/1.6.1/ dom4j-1.6.1.jar
另外针对我们常用的eclipse,idea等ide,maven也都有对应的插件,这里以eclipse为例说明。
Eclipse下的插件叫做m2eclipse,官方地址是http://m2eclipse.sonatype.org/,安装方法和其他插件相同。
在线安装地址http://m2eclipse.sonatype.org/sites/m2e
这里需要注意,m2eclipse针对eclipse3.2插件的地址已经失效,而我用的恰恰是3.2版,正好我硬盘上有myeclipse8.x,为了不必要的麻烦,我直接使用8.x,因为我记得好像是在7.5以后的版本中集成了一款插件maven4myeclipse来辅助maven开发。
(二)
使用maven创建java项目
在cmd下面运行
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javase –D packageName=org.jlqu1
会看到|
![](/uploads/allimg/100531/0943292146-8.gif)
需要注意:如果是第一次用maven创建项目,速度可能会有点慢,因为maven是基于插件的,很多插件都是使用的时候才会从maven的插件库里去下载,从上图中也可以看到有downloading字样。
这个pom文件中的内容,大家望文生义都能理解,我只解释一下version,这个值对应到我们运行mvn package命令后在target文件夹下面得到的
javase-1.0-SNAPSHOT.jar,
Maven有很多有用的命令,其中的mvn stie很有意思,运行成功后会在javase\target\下生成site文件夹,里面是一堆网页文件,打开index.html,是不是很熟悉呢?对了,他用apache官方的模板生成了一套关于我们自己项目的网站,很好玩~
Maven具体的命令,本文不作过多讲解,有兴趣的同学可以到官方网站看看,讲解非常详细。
有些同学可能想知道我们输入的命令到底是说明意思呢?
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javase –DpackageName=org.jlqu1
我来详细解释一下:
mvn是maven的命令
archetype:create表示创建一个项目,其中archetype是maven的一个插件,create是他的一个goal(maven插件的goal相当于ant的target)
-D是java用来设置属性的方式,请注意,它不是maven设置的。
groupId是项目所在的组名,你可以想象他就是org.apache…,这个组名主要有两个作用,其一是用来标识项目,其二是作为默认的包名,加入我们在上面的命令里没有输入–DpackageName=org.jlqu1,那么我们项目里的包就会使
com.jlqu。
artifactId就是所创建的项目名称,在本例中可以看到项目名称就叫做javase。
–DpackageName是指定包名。
如果需要将项目导入eclipse中,可以使用运行mvn eclipse:eclipse命令,完成后我们可以在项目根目录下看到熟悉的.classpath和.project两个文件。
使用maven还可以进行添加依赖包、进行单元测试等操作,这些我们将会在本文最后的实例中通过可视化工具进行讲解,有兴趣深入研究的同学可以去查一下每步操作对应的命令。
(三)
创建一个web项目
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javaweb -DarchetypeArtifactId=maven-archetype-webapp
对了,我们的目录结构就是和这里对应的。多查看几个包的目录结构,对比一下每个的pom文件,我们会发现这里的层次结构其实是这样的groupId/artifactId/version/,如果groupId中间有.号,也就是类似这种org.apache.struts,那么它的目录结构就应该是org/apache/struts/artifactId/version/,在version文件夹下面就是我们真正需要的文件了,这里的包命名也是有规则的,必须是artifactId-version.jar,按照这种理论我们就能得到dom4j在repository中真正的目录结构dom4j/dom4j/1.6.1/ dom4j-1.6.1.jar
另外针对我们常用的eclipse,idea等ide,maven也都有对应的插件,这里以eclipse为例说明。
Eclipse下的插件叫做m2eclipse,官方地址是http://m2eclipse.sonatype.org/,安装方法和其他插件相同。
在线安装地址http://m2eclipse.sonatype.org/sites/m2e
这里需要注意,m2eclipse针对eclipse3.2插件的地址已经失效,而我用的恰恰是3.2版,正好我硬盘上有myeclipse8.x,为了不必要的麻烦,我直接使用8.x,因为我记得好像是在7.5以后的版本中集成了一款插件maven4myeclipse来辅助maven开发。
(二)
使用maven创建java项目
在cmd下面运行
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javase –D packageName=org.jlqu1
会看到|
需要注意:如果是第一次用maven创建项目,速度可能会有点慢,因为maven是基于插件的,很多插件都是使用的时候才会从maven的插件库里去下载,从上图中也可以看到有downloading字样。
这个pom文件中的内容,大家望文生义都能理解,我只解释一下version,这个值对应到我们运行mvn package命令后在target文件夹下面得到的
javase-1.0-SNAPSHOT.jar,
Maven有很多有用的命令,其中的mvn stie很有意思,运行成功后会在javase\target\下生成site文件夹,里面是一堆网页文件,打开index.html,是不是很熟悉呢?对了,他用apache官方的模板生成了一套关于我们自己项目的网站,很好玩~
Maven具体的命令,本文不作过多讲解,有兴趣的同学可以到官方网站看看,讲解非常详细。
有些同学可能想知道我们输入的命令到底是说明意思呢?
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javase –DpackageName=org.jlqu1
我来详细解释一下:
mvn是maven的命令
archetype:create表示创建一个项目,其中archetype是maven的一个插件,create是他的一个goal(maven插件的goal相当于ant的target)
-D是java用来设置属性的方式,请注意,它不是maven设置的。
groupId是项目所在的组名,你可以想象他就是org.apache…,这个组名主要有两个作用,其一是用来标识项目,其二是作为默认的包名,加入我们在上面的命令里没有输入–DpackageName=org.jlqu1,那么我们项目里的包就会使
com.jlqu。
artifactId就是所创建的项目名称,在本例中可以看到项目名称就叫做javase。
–DpackageName是指定包名。
如果需要将项目导入eclipse中,可以使用运行mvn eclipse:eclipse命令,完成后我们可以在项目根目录下看到熟悉的.classpath和.project两个文件。
使用maven还可以进行添加依赖包、进行单元测试等操作,这些我们将会在本文最后的实例中通过可视化工具进行讲解,有兴趣深入研究的同学可以去查一下每步操作对应的命令。
(三)
创建一个web项目
mvn archetype:create -DgroupId=com.jlqu -DartifactId=javaweb -DarchetypeArtifactId=maven-archetype-webapp