很早就听说过Maven这个名词,当时就知道是一个项目管理工具,用来管理Jar包,认识的比较肤浅。这次看了下视频,简单学习了下,对其的理解更加深刻了。先来看一下简单的Maven基础知识。
Maven是Apache基金会下的一个用来管理项目的工具。Maven是基于项目对象模型(
POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
SVN大家应该都非常熟悉,是版本管理工具,对某一个项目进行时间轴方面的管理,从1.0,1,1……2.0,2.1…… 可以看做是纵向的管理,但是svn中项目与项目之间是相互独立。也就是说SVN很难管理项目与项目之间的变化。例如:一般一个大的公司都会有很多项目,项目之间的Jar包有重复的,项目和项目之间可能有共同的部分,例如权限控制部分,在或者说这个项目可能用到那个项目的某些功能模块等等,这是SVN就很难办到了。而Maven的出现在是为了解决这个问题的吧。我的理解:Maven是一款建立在多项目之上的工具,用来维护多个项目之间的共同的部分(例如常用Jar包,共同模块(其实是自己开发的Jar包)),依赖关系(项目之间的相互关系),属于横向的管理。和SVN互补,两者共同使用来管理多个项目,使各个项目有条不紊进行的各自成长,并从其他哪里进行着不同的来往。看吧,其实就和我们人类一样,需要年龄的成长,也需要人际关系的拓展。 好了废话少话,看看Maven的安装简单使用吧。
一,Maven的安装:
1,前提:安装好了JDK,并进行了环境变量的配置;
2,下载安装:到官方网站:http://maven.apache.org/download.cgi 进行Maven的下载,下载后解压即可完成(最好在英文目录下)。
3,配置:
1),环境变量:和配置JDK环境变量一样,在用户变量中添加MAVEN_HOME=D:\maven\apache-maven-3.1.1,然后修改PATH,在配置中添加%MAVEN_HOME%\bin;即可。然后在运行窗口中输入mvn -version ,出现maven的相关版本号信息,即表明已经安装好。
2),本地仓库的配置:
maven默认会在根目录下建立 .m2做为本地仓库。这里我们需要修改conf下的setting.xml文件(maven的配置都需要在这里进行配置),设置本地仓库的路径:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ~/.m2/repository <localRepository>/path/to/local/repo</localRepository> --> <localRepository>D:/maven/repo</localRepository>
这样我们的本地仓库就设置在了D:/maven/repo,下载的jar包就到这个里边了。当然我们在这个配置文件也可以设置中央仓库(也就是apache提供远程仓库,几乎囊括了常用的所有jar包),私服等。在这个文件都有注释的实例,我们耐心的看看英文即可。
例如配置Nexus私服为镜像,所有的依赖都会在这里找:
二,Maven项目的建立:
1,首先eclipse中配置Maven,需要配置根路径和setting文件即可,看这两张图:
然后就可以建立Maven Project了。注意几点:
1,项目的坐标:
groupId:用来表示项目的名称;
artifactId:用来表示项目的模块名,建议使用项目的名称——模块名称来表示;
version:项目的版本号
2,建立项目的结构:
源代码应该放置到src/main/java中
源代码的资源文件应该放置在src/main/resources文件夹中
测试代码应该放置到src/test/java中
测试代码的资源文件应该放置在src/test/resources文件夹中
3,Pom.xml的文件的简单编写,这里主要编写引用的jar包,和其他项目之间的依赖,jar包的dependency的GVA可以到http://mvnrepository.com 查询
4,最后看一下maven项目的几个常用命令:
mvn clean -->表示运行清理操作(会默认把target文件夹中的数据清理)
mvn clean compile-->表示先运行清理之后运行编译,会见代码编译到target文件夹中
mvn clean test-->运行清理和测试
mvn clean package-->运行清理和打包
mvn clean install-->运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用
mvn clean deploy-->运行清理和发布(发布到私服上面)
这就是Maven的本地的安装及项目的简单使用。但是在项目中我们还需要Nexus私服,进行项目的本地管理,方便没网的状态,而且脱离对中央仓库的依赖,下篇博客进行介绍。Maven学习,需要在实践中不断积累,这里推荐学习资料:http://juvenshun.iteye.com/