Maven学习与idea配置
冰冠 2018年06月18日09:31:04
一、Maven
1、什么是maven
maven是一个项目构建和管理的工具,提供了帮助管理 构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。
maven的好处在于可以将项目过程规范化、自动化、高效化以及强大的可扩展性
利用maven自身及其插件还可以获得代码检查报告、单元测试覆盖率、实现持续集成等等。
2、Maven常用命令
Maven库:
http://repo2.maven.org/maven2/
Maven依赖查询:
http://mvnrepository.com/
1. 创建Maven的普通java项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=projectName
2. 创建Maven的Web项目:
mvn archetype:create
-DgroupId=packageName
-DartifactId=webappName
-DarchetypeArtifactId=maven-archetype-webapp
3. 编译源代码: mvn compile
4. 编译测试代码:mvn test-compile
5. 运行测试:mvn test
6. 产生site:mvn site
7. 打包:mvn package
8. 在本地Repository中安装jar:mvn install
9. 清除产生的项目:mvn clean
10. 生成eclipse项目:mvn eclipse:eclipse
11. 生成idea项目:mvn idea:idea
12. 组合使用goal命令,如只打包不测试:mvn -Dtest package
13. 编译测试的内容:mvn test-compile
14. 只打jar包: mvn jar:jar
15. 只测试而不编译,也不测试编译:mvn test -skipping compile -skipping test-compile
( -skipping 的灵活运用,当然也可以用于其他组合命令)
16. 清除eclipse的一些系统设置:mvn eclipse:clean
ps.一般使用情况是这样,首先通过cvs或svn下载代码到本机,然后执行mvn eclipse:eclipse生成ecllipse项目文件,然后导入到eclipse就行了;修改代码后执行mvn compile或mvn test检验,也可以下载eclipse的maven插件。
mvn -version/-v 显示版本信息 ---安装完后检验是否安装成功
mvn archetype:generate 创建mvn项目 --默认路径放在c盘,用户目录下
mvn archetype:create -DgroupId=com.oreilly -DartifactId=my-app 创建mvn项目
mvn package 生成target目录,编译、测试代码,生成测试报告,生成jar/war文件
mvn jetty:run 运行项目于jetty上,
mvn compile 编译
mvn test 编译并测试
mvn clean 清空生成的文件
mvn site 生成项目相关信息的网站
mvn -Dwtpversion=1.0 eclipse:eclipse 生成Wtp插件的Web项目
mvn -Dwtpversion=1.0 eclipse:clean 清除Eclipse项目的配置信息(Web项目)
mvn eclipse:eclipse 将项目转化为Eclipse项目
一般的顺序是1.mvn clean 2.maven compile 3 .maven package.idea和eclipse也集成这些功能,可以直接在开发工具上操作。
3、Maven概念模型
4、Maven的声明周期,项目构建过程
Maven生命周期就是为了对所有的构建过程进行抽象和统一
包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤
Maven有“三套”相互独立的生命周期,而且相互独立,这三套生命周期分别是:
Maven三大生命周期
clean:清理项目的
在进行真正的构建之前进行一些清理工作。
default:构建项目的
构建的核心部分,编译,测试,打包,部署等等。
site:生成项目站点的
生成项目报告,站点,发布站点
要特别注意的是:它们是相互独立的,可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然也可以直接运行mvn clean install site 运行着三套生命周期。
二、Idea下Maven的配置
1、选择 Maven + IntelliJ IDEA 的理由
之所以要选择IntelliJ IDEA,是因为Maven+Eclipse实在太难用了。Eclipse有两个Maven插件 m2eclipse 和 Eclipse IAM。但是由于Eclipse和Maven设计上的矛盾,这两个插件可能都达不到你想要的效果。m2eclipse 会把你所有类型的项目都视为Maven类型项目,这对于一个单纯的Java项目或许可以,对于一个JEE或者WEB项目都是一场灾难。Eclipse IAM 并不会改变你的项目类型,但是他提供的功能也就仅仅限于编辑和运行POM文件了,甚至连依赖性都管理不了。相比之下,如果你非要用Eclipse的话我还 是推荐你使用Eclipse IAM。Eclipse想要完美的支持Maven恐怕需要在底层设计上做一些改变,无论是代码规范,项目结构规范和依赖性管理上,都有着不可调和的矛盾。 显然,在这方面IntelliJ IDEA做的要好的多,以至于你很难说出对它的不满。
2、Maven + IntelliJ IDEA 的优势
一切都是Module:
IntelliJ IDEA借鉴的Maven的概念,不在采取Eclipse里Project的概念,一切都是Module。无论是否使用Maven,你的项目都是一个独立 的Module。并且你可以混搭使用Maven Module和普通的Java Module,两者可以和谐共存。
支持Multi-module:
可以说Maven的项目结构设计是非常严格的,现实应用中你必须用到Parent-Child的模式。Eclipse由于不支持在一个Project上建 立Sub-Project,因此无论如何目前都不能实现。IntelliJ IDEA可以完美的实现这个设计,并且无论是Module属性里,还是彼此的依赖性上都不会出现问题。
更方便的生命周期操作:
比起Eclipse通通放进右键菜单的行为,IntelliJ IDEA有着单独的窗口可以完成Maven的操作。你可以针对不同Module进行 Clean Compile Package Install等操作,各个Plug-in的操作也一清二楚。
完美的依赖性管理:
由于Maven会把所有依赖的包放在本机的一个目录下,所以实际上是脱离Project本身存在的。IntelliJ IDEA引入了一个External Library的概念,所有的Maven依赖性都会放在这里,和项目自带的库区分开。并且Module之间会智能的判断,你不需要Maven Install来进行引用代码的更新。
动态更新:
每当Maven相关的设置更改时,例如修改了pom的依赖性,添加删除Module,IntelliJ IDEA会提示你进行更新。这种更新实际上就是运行了Maven,所以你不许要手动运行Maven Compile来进行更新,也不会像Eclipse里遇到莫名其妙的问题。
3、Idea集成Maven
单击 File –> settings 菜单选项,在跳出的设置窗口中输入maven,定位到maven配置项菜单。
在maven配置面板中,需要修改两个属性:
Maven home directory: (Maven目录)将idea默认的maven修改为自己下载的
User settings file: (Settinglujing)修改为自己配置好的settings.xml文件。
Local repository:(本地仓库路径)
4、Idea创建Maven项目
file->new -> projects->Maven->不选择任何Maven模板->起个GroupId、ArifactId->起个项目名。注意:Idea_Project是存放此项目的工作区间,mavenDemo_idea15为存放此项目的子目录。->建好项目后,打开,点击Auto-Import
5、Idea项目部署(ctrl+alt+shift+s)
Project: 无需设置 (当然可点击Project complier output自定义编译目录)
Modules:可看到此项目无任何适配服务组件(因为是手工创建Maven,没有选择任何Maven模板)--因此需要我们进行添加。
选择Web(为此项目添加Web服务组件,这便是一个Web项目了)
现在为Web设置资源目录。双击Web Resource Directory
选择scr/main目录
现在设置Web的描述文件的目录
Facts: 表示当前项目的适配服务组件。可看到此项目已是一个Web项目了。
Aftifacts: 这个Aftifacts描述了当前项目发布的信息。现在进行添加,从Modeles中选择。
说明:A: 现在Artifacts已有了发布的项目了(idea中准确的说应是Modele) B:output root目录描述了当前项目的编译目录及适配服务。