一般来说,github上大多的java项目都是使用maven,ant等进行构建的。由于之前没有使用过maven,因此这几天对maven进行了简单的学习。古话说:“温故而知新”,一些命令长时间不使用都会遗忘,所以想通过这篇博客记录一下自己对maven学习的成果,等到使用时再温习。下面将首先对maven进行介绍,然后介绍maven的安装配置以及与eclipse的集成,最后介绍maven常用命令,maven一般的项目结构,以及maven的pom文件。

一. maven简介

maven是一个强大的项目构建和管理工具,利用java进行开发,属于Apache下的开源项目,现在的最新版本为Apache Maven 3.3.9,官网为 http://maven.apache.org。maven是跨平台的,并且功能很强大,能够帮助使用者完成从清理,编译,测试,生成报告,打包和部署的一系列操作过程。maven标准化了项目的构建过程,有利于团队之间的协作。此外,maven可以有效的解决java项目中jar包依赖问题,解决由此带来的版本不一致等问题。maven还提供了一个免费的中央仓库,几乎可以找到任何开源类库。

二. maven安装及配置

(1)安装配置本地maven

在安装maven之前必须保证计算机已经安装和配置好了jdk环境,然后从官网上下载想要安装的maven版本 http://maven.apache.org/download.cgi,这里我安装的maven 3.3.9。然后根据自己的安装路径配置环境变量,具体的新建系统变量MAVEN_HOME,并设置为安装的maven路径,如下图:

最后,在系统变量Path加上 ;%MAVEN_HOME%\bin。之后,在命令行中输入mvn -version 判断是否安装成功,如果出现如下界面证明安装成功。

上述步骤完成后就可以开始使用maven了,但是maven默认将仓库放在用户的临时文件夹下的 /m2/repository下,但是为了方便管理可以通过设置conf 文件 夹 下的setting.xml文件下<localRepository></localRepository>节点来自定义本地仓库内容。我再E盘重新建立本地仓库文件夹E:/m2/repository,并设置了setting.xml文件:<localRepository>E:/m2/repository</localRepository>。

这样,我们就完成了maven的安装配置及自定义本地仓库的位置,在命令行中输入mvn help:system,可以看到本地maven为我们从中央仓库中下载了一些文件到本地仓库中。

(2)eclipse中配置maven

eclipse是我们熟悉的IDE,可以直接通过下载m2eclipse插件来完成maven的安装及配置,这种方式不便利maven的管理及使用。本人推荐使用本地安装maven后在eclipse中进行配置。具体的完成(1)中所有操作确定maven安装配置正确后,首先在eclipse->Window->Preferences->Maven->Installations中添加maven,如 下图:

然后在eclipse->Window->Preferences->Maven->User Settings中设置本地仓库及对应setting.xml文件位置,具体如下(我拷贝一份了setting.xml文件到本地仓库m2文件夹下,用来说明这是针对该仓库的设置,也可以直接使用maven安装文件下的setting.xml文件):

以上就完成了eclipse配置本地安装的maven环境,如果在eclipse中Window->Preferences没有出现maven插件选项,可以参考博客http://blog.csdn.net/truong/article/details/37834053 来解决问题。

三. maven常用命令

本节介绍几个maven常用的命令,以备遗忘时可以查看。

mvn -version                 查看maven的版本及配置信息

mvn archetype:create   -DgroupId=    DartifactId=    构建java项目

mvn archetype:create   -DgroupId=    DartifactId=    -DarchetypeArtifactId=maven-archetype-webapp 创建web项目

mvn compile                编译项目代码

mvn package               打包项目

mvn package -Dmaven.test.skip=true   打包项目时跳过单元测试

mvn test                      运行单元测试

mvn clean                    清除编译产生的target文件夹内容,可以配合相应命令一起使用,如mvn clean package, mvn clean test

mvn install                   打包后将其安装在本地仓库

mvn deploy                  打包后将其安装到pom文件中配置的远程仓库

mvn eclipse:eclipse      将maven生成eclipse项目结构

mvn eclipse:clean         清除maven项目中eclipse的项目结构

mvn site                       生成站点目录

mvn dependency:list      显示所有已经解析的所有依赖

mvn dependency:tree     以树的结构展示项目中的依赖

mvn dependency:analyze  对项目中的依赖进行分析,依赖未使用,使用单未引入

mvn tomcat:run              启动tomcat

1、常用命令

mvn archetype:generate--构建项目
mvn clean--项目清理
mvn test--项目单元测试的编译
mvn compile--项目源代码的编译
mvn package--项目打包
mvn install--发布项目提交到本地仓库
mvn deploy--发布项目到
mvn jetty:run--启动jetty容器
mvn eclipse:clean--清除eclipse的一些系统设置
mvn eclipse:eclipse--生成eclipse项目文件
mvn idea:clean--清除idea的一些系统设置
mvn idea:idea--生成idea项目文件
mvn dependency:tree--查看依赖树
mvn assembly:assembly--需要配assembly插件,可用于把指定文件进行打包 tar.gz,zip包
//指定maven参数:
-DskipTests=true--默认不走单元测试
-P local--选择资源文件类型 local,需在pom开启资源配置

提示1:关于maven的参数,在参数前面的大写D是传递参数的符号,后面才是参数的真正名称,这一说法可以参考《maven实战》一书,里面有详细的解释。链接:https://item.jd.com/10476794.html

提示2:个人理解,maven其实都是以插件的机制组合而成的,比如archetype,eclipse,jetty,idea这些,每一个都代表了一个插件。比如archetype的用法为什么用grenrate,还有参数要传递生成,直接搜索:maven archetype plugin。

提示3:maven执行时,是有顺序的,比如mvn clean test compile,如果单独运行mvn compile时,默认会执行clean,test命令。

2、常用搭建项目骨架的命令

生成application项目:mvn archetype:generate -DarchetypeCatalog=internal -DarchetypeArtifactId=maven-archetype-quickstart
生成web项目:mvn archetype:generate -DarchetypeCatalog=internal -DarchetypeArtifactId=maven-archetype-webapp

提示1:如上面解释的,archetype实质上一个插件,那么我们可以直接搜索这插件的用法,官方链接:http://maven.apache.org/guides/introduction/introduction-to-archetypes.html,在页面的右侧只要有超链接的都可以点进去看其它扩展说明。

提示2:而对于maven-archetype-quickstart这些参数,也是官网提供的,参考:http://maven.apache.org/archetypes/index.html,里面明确给出了示例和创建文件夹的意思代表的是什么。

上面的命令执行时,会提示输入groupid,artifactid这些信息,依次输入即可完成。

比如我们要默认生成一个项目骨架时,可以是如下命令:

mvn archetype:generate -DarchetypeCatalog=internal -DgroupId=(项目组)com.jsoft.testproject -DartifactId=(项目名/模块名)testmaven -Dversion=(版本号)1.0-SNAPSHOT  -Dpackage=(包名)testpackage

提示1:以上创建是以maven-archetype-quickstart为主的项目。

提示2:同样,经过测试,无论是新建的是quickstart项目还是webapp项目,只要文件夹新建对了即可。

3、maven项目的文件夹说明

一个标准的maven项目,以quickstart为主的文件夹目录结构如下:

而webapp项目的目录结构如下:

请注意:webapp项目上会在main文件夹上多出一个webapp的文件夹,且这个webapp文件夹不会在test文件夹上出现,也就说,单元测试是测试逻辑代码。

而如果使用maven命令新建webapp项目时,默认是不带test文件夹的,test文件夹可以后期新建,对于为什么不新建,其实是官方默认没有。参考:

Maven官方最标准的目录布局:http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

4、maven在eclipse中的应用

在最新版本的eclipse中,已经默认集成maven的插件,可以非常方便的集成各种命令。在eclipse示意图如下:

比如要执行一个mvn compile的命令,操作为:Maven build...,注意:这里Maven build为执行最近一次的命令,所以千万不要搞错;然后输入compile

出现如上构建,证明已经成功。

而针对webapp项目,可以使用Run as Server进行测试,如果你的项目不能运行,那么肯定是没有配置成功导致的。

很多时候我们已经不用tomcat进行测试了,转而使用更快捷更轻量级的jetty进行操作,比如:mvn jetty:run。

Maven常用命令及Eclipse应用的更多相关文章

  1. maven(5)------eclipse下maven常用命令打包

    eclipse集成maven常用命令clean,install,一步完成项目清理和打包.在集成工具下使用maven 命令与命令窗口不同,需要将mvn省掉(比如:mvn clean,在工具中直接用cle ...

  2. maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令

    maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令 在日常的工作中由于各种原因,会出现这样一种情况,某些项目并没有打包至mvnrepository. ...

  3. 转:Maven常用命令

    转:Maven常用命令 Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1 ...

  4. Maven 常用命令, 备忘

    Maven在现在的Java项目中有非常重要的地位, Maven已经不是Ant这样仅仅用于构建, 首先, 它是一个构建工具, 把源代码编译并打包成可发布应用的构件工具其次, 它是一个依赖管理工具, 集中 ...

  5. Maven常用命令(转)

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...

  6. Maven常用命令(转载)

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...

  7. maven 常用命令及操作(转)

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ Maven常用命令: 1. 创建Maven的普通 ...

  8. maven常用命令介绍

    mvn 3.0.4 创建maven项目命令  mvn  archetype:generate   -DgroupId=damocles-autocredit -DartifactId=damocles ...

  9. Maven常用命令:

    Maven库: http://repo2.maven.org/maven2/ Maven依赖查询: http://mvnrepository.com/ 一,Maven常用命令: 1. 创建Maven的 ...

随机推荐

  1. 求交错序列前N项和(15 分)

    7-2 求交错序列前N项和(15 分) 本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+... 的前N项之和. 输入格式: 输入在一行中给出一个正整数N. 输出格式: 在 ...

  2. poj 3253 Fence Repair (贪心,优先队列)

    Description Farmer John wants to repair a small length of the fence around the pasture. He measures ...

  3. 退出循环break,在while、for、do...while、循环中使用break语句退出当前循环,直接执行后面的代码。

    在while.for.do...while循环中使用break语句退出当前循环,直接执行后面的代码. 格式如下: for(初始条件;判断条件;循环后条件值更新) { if(特殊情况) {break;} ...

  4. MongoDB CPU 利用率高,分析慢请求

    Jemeter 压测过程,发现mongodb的CPU均达到100%,需要查看mongodb的执行情况,使用mongo自带的profiling功能. profiling将请求的执行情况记录在DB下的 s ...

  5. Linux-Zabbix

    ###############################安装######################################## 安装部分我写了文档,可能不是很完善 文档如下→→ [ ...

  6. innerHTML与jquery里的html()区别介绍

    我原本一直以为innerHTML和jquery里的html其实是完全一样的,jquery是多此一举了,直到我遇到一次问题   看个示例: 复制代码 代码如下: var tbody=document.c ...

  7. 推荐一个lamp的一键安装包

    本来我是一直用的nginx的,现在安全者的服务器是用的tengine,稳定性就不用多说了! 前段时间用thinkphp写了两个两个项目,刚开始放到了国外的服务器上,环境也是lnmp的,最后发现ngin ...

  8. git修改用户名和邮箱

    用户名和邮箱地址是本地git客户端的一个变量,不随git库而改变. 每次commit都会用用户名和邮箱纪录. 1.查看用户名和地址 git config user.name git config us ...

  9. Rest架构以及什么是Restful

    关于Rest的内容,在网上开了好多文章~ 下面我就把一些关于Rest经典的链接发出来,大家可以参考一下~ 1.什么是Rest和Restful? 怎样用通俗的语言解释什么叫 REST,以及什么是 RES ...

  10. unity3d中给GameObject绑定脚本的代码

    一.获取GameObject 1.GameObject.Find() 通过场景里面的名子或者一个路径直接获取游戏对象.    GameObject root = GameObject.Find(“Ga ...