Maven从入门到入门
Posted _oldzhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven从入门到入门相关的知识,希望对你有一定的参考价值。
Maven的作用是包管理,当然不仅于此,但这里记录的仅限于此。
包管理可以将我们从手动添加jar包,手动建立引用的繁琐的工作中解放出来,我们只需要维护一个pom.xml文件,类似于ant的build文件,这个文件位于项目根目录,如果使用maven的创建项目命令创建时会自动生成这个pom文件,IDE新建maven项目时也会自动创建。这个文件会描述项目的各种依赖关系。Maven有一系列的任务,我们只需要执行命令或者使用IDE工具的插件点一点就会自动执行这些任务。包括下载依赖包,清理,打包部署等多种任务。
一:准备工作
首先,官网下载maven安装,需要注意版本问题,3.2以上必须是1.6+JDK.解压安装完成后需要配置环境变量等,包括path, M2_HOME, MAVEN_HOME。
如果是使用代理上网,那么maven也需要配置代理才能保证maven下载包时会通过代理服务器。找到maven目录下的conf/settioin.xml找到<proxy>修改host和port即可。
了解MAVEN从何处下载包前,需要了解本地仓库和中央仓库的概念。maven下载包的来源就是仓库,本地仓库是指maven默认会在本地建立一个.m2的目录,用于作下载时的本地仓库,windows时这个目录默认在用户目录下。当然这也可以改,还是改setting.xml文件<localRepository>。中央仓库是指maven官方自己维护的一个远程仓库,默认是这个路径:http://repo1.maven.org/maven2/。确认某个包在中央仓库有没有时可以访问http://search.maven.org/ 关键字搜索确认。maven下载包时首先会从本地仓库找,如果没有则从中央仓库找,找到下载后也会下载到本地仓库。
但有些库在中央仓库中也找不到,只有在Java.net或JBoss的储存库远程仓库中才能找得到。所以可以把这些远程仓库添加到maven配置文件pom.xml中。这样搜索包的时候如果在中央仓库找不到后还会继续从远程仓库中找。
添加Java.net远程仓库
<project ...>
<repositories>
<repository>
<id>java.net</id>
<url>https://maven.java.net/content/repositories/public/</url>
</repository>
</repositories>
</project>
添加jboss远程仓库
<project ...>
<repositories>
<repository>
<id>JBoss repository</id>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
</project>
二:Maven的依赖
maven去下载包时需要在pom文件中有三个信息描述,分别是<groupId><artifactId><version>这三个组合起来称为maven的坐标。能从仓库中唯一确认到某个包文件。这种依赖关系在pom.xml中的描述如下。这样一段描述表示项目依赖log4j的包,构建时会自动下载到本地仓库并引入。
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
</dependencies>
外部依赖:有一些依赖包是不支持maven的。或者团队内部开发的一个jar包需要被依赖时就需要使用外部依赖了。
比如我们引用了ldapjdk.jar,从网上下载了这个包,在项目目录下新建了个lib目录,将包放在里面,然后我们添加如下依赖描述,就能从本地文件目录去查找这个包了,这样的方式就是外部依赖。
<dependency>
<groupId>ldapjdk</groupId>
<artifactId>ldapjdk</artifactId>
<scope>system</scope>
<version>1.0</version>
<systemPath>$basedirsrclibldapjdk.jar</systemPath>
</dependency>
除了这种方式依赖到本地文件系统,还可以将这个包文件安装到本地仓库,这样就可以就可以利用坐标能找到这个包了。但这种方式需要每个人都进行安装一遍,比较麻烦。
安装的命令如下:
mvn install:install-file -Dfile=c:\\kaptcha-version.jar -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=version -Dpackaging=jar
三:使用模板新建Maven项目
Maven提供多个项目的模板供用户使用。使用命令 mvn archetype:generate就可以新建项目了。第一次使用这个命令时会把中央仓库的文件都下载到本地仓库来,所以比较耗时,下载完后就会列出所有maven的项目模板,以数字为代号,选择模块确认后需要填写项目的groupId,artifactId,version等信息,然后项目就新建OK了。
使用mvn archetype:generate创建项目后是一个maven项目,eclipse可以作为一个maven项目导入,但不能作为一个空的eclipse项目导入,因为还没有.project等文件。
可以进行到项目目录后使用mvn eclipse:eclipse 命令将项目转换为eclipse项目。
可以更新一下默认的pom.xml文件,比如将junit版本提高一点。改完后同样执行mvn eclipse:eclipse会自动构建项目,将新的依赖下载到本地仓库并引入,原来的引入删除。
然后使用mvn package 命令进行编译,打包,打包的类型在pom中会有定义。默认为jar,执行完成后会在项目target目录下出现一个jar文件。
上面创建的是一个普通java项目,如果需要创建web项目,需要选择webapp模板。需要在创建命令时指定maven-archetype-webapp。web项目打包时会可打成war包。使用eclipse创建maven时同样可以选择webapp模板。
四:构建与清理
Maven命令中的mvn clipse:eclipse会下载依赖的包,相当于mvn install。在eclipse的m2e插件会有mvn install这个任务,运行时会下载项目的依赖包。执行mvn package命令会完成maven的整个构建的生命周期需要完成的任务,它包括validate, compile, test以及package。所以用这个命令就可以完成打包全过程了。
一般在构建前需要清理下缓存,缓存指的是上次构建时存在target目录下的文件。需要执行mvn clean命令进行清理。
所以一般会一起使用 mvn clean package。
以上是关于Maven从入门到入门的主要内容,如果未能解决你的问题,请参考以下文章