转自:https://blog.csdn.net/zzpzheng/article/details/49474671

1. 什么是 Maven,为什么要使用 Maven 而不是 Ant

Maven简单来说是一个项目管理工具,被认为是Ant的替代品或者继任者。事实上Maven的功能要远远超出Ant,它不仅仅提供编译的脚本,更是在整 个项目周期中提供测试,发布,文档生成等功能,并且有着独特的依赖性管理方法。但是强大的功能的代价就是复杂的使用方法,第一次使用Maven往往需要将 近半个小时的时间(国内网速)来下载一个本地的依赖库,这无疑会使很多开发人员“知难而退”。虽然广受诟病,一个不争的事实就是Maven逐渐代替了 Ant,使用Maven也成了Java开发人员的一个必要技能。

2. IntelliJ IDEA 与 Eclipse

在Java的世界里,Eclipse毋庸置疑是IDE中的王者,IntelliJ IDEA和NetBeans都只能生活在Eclipse的光环下。Eclipse的强大已经不用我多说了,但其实IntelliJ IDEA也是一个相当优秀的IDE,尤其体现在它的智能上。它的一个针对.Net的Clone产品ReSharper已经被越来越多的C#开发者所接受。 IntelliJ IDEA提供了大量的智能规则来协助开发者,类似代码补全,用法的转换,格式的提示等等,当你习惯以后,你就会对那个小灯泡爱不释手。

3. 选择 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做的要好的多,以至于你很难说出对它的不满。

4. 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里遇到莫名其妙的问题。

5. Maven 安装

到http://maven.apache.org/download.html 下载最新的Maven版本,我下载的版本为最新的apache-maven-3.0.4。推荐使用最新的Maven 3,因为比以前的Maven 2性能更好,而且完全兼容Maven 2。

下载好以后,解压到一个目录,我的目录为 D:\apache-maven-3.0.4,接着配置Maven环境变量M2_HOME为你解压的目录,如下图新建M2_HOME变量并追加到Path后面:

如果要在CMD控制台运行Maven命令的话,还需要配置Jdk环境变量,因为我接下来的操作都是基于IntelliJ IDEA,所以就不用配置JDK环境变量。

6. Maven 与IntelliJ IDEA完美使用(基于IntelliJ IDEA 12)

打开IntelliJ IDEA,新建一个Maven项目,如下图,项目名称为mymaven

选择Maven模版

创建过程中,配置Maven主目录

创建好后的目录结构如下图,IDEA创建了src/main/resources(自动创建)、src/main/java(手动创建)、src/main/test(手动创建)、以及pom.xml文件(自动创建)

按照Maven约定,项目的主目录位于src/main/resources、src/main/java中,测试目录位于src/main/test 中,所以我们在最终打包项目的时候,只包含主目录代码,不会包含测试目录里的代码,而测试目录里的代码只会在测试时候用到。

最后pom.xml这个文件是我们Maven项目的核心文件,POM(Project Object Model,项目对象模型)定义了项目的基本信息,用于描述项目如何构建,声明项目依赖。

project:是xml文件的根元素,我们主要关心根元素下的子元素 
modelVersion:定义了当前POM模型的版本,Maven 2 或Maven 3 只能是4.0.0 
groupId:定义了项目属于哪个组,一般来说这个网网和公司或组织关联,比如说,你所在的公司为mycom.那就应该定义为com.mycom.mymaven,mymaven为项目名称 
artifactId:定 义了当前Maven项目在组中的唯一id,例如HelloMaven这个项目,我则把他定义为hello-maven,还例如spring项目,他的 groupId为org.springframework,对于content项目来说artifactId则为spring-content,web项 目则为spring-web

最后我们使用IntelliJ IDEA来用Maven编译我们的代码,打开Maven Projects菜单,如图,选中clean、compile并右键点击Run 'hello-maven[clean,compile]'按钮即可。

根据输出结果我们看到,clean命令让Maven先清理target目录,Maven一般认为项目的输出目录为target,然后执行resource任务,现在为定义项目资源,所以暂时略过,最后执行编译任务!

转载于:https://www.cnblogs.com/sharpest/p/8491991.html

Maven与IDEA结合相关推荐

  1. SpringBoot项目使用nacos,kotlin使用nacos,java项目使用nacos,gradle项目使用nacos,maven项目使用nacos

    SpringBoot项目使用nacos kotlin demo见Gitte 一.引入依赖 提示:这里推荐使用2.2.3版本,springboot与nacos的依赖需要版本相同,否则会报错. maven ...

  2. OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3

    OpenAPI使用(swagger3) demo见Gitte 一.背景及名词解释 OpenAPI是规范的正式名称.规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公 ...

  3. Gradle 将项目publish到Nexus,Kotlin将项目发布到nexus,springboot项目发布到maven仓库

    示例见:Gitte 公仓设置 在项目中添加maven-publish的插件 plugins {kotlin("jvm") version "1.3.72"kot ...

  4. springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试

    首先,maven项目中引入依赖 <dependency><groupId>junit</groupId><artifactId>junit</ar ...

  5. IDEA中maven的命令及作用

    maven中的Lifecycle中的那些按钮都有哪些,都有什么功能呢? validate:验证项目的正确性以及包含所有必要的信息 compile:编译源码 test:编译和运行测试代码 package ...

  6. 如果你没用过maven的install,你应该了解一下!maven中的install功能及用法。

    maven中有一个大多数人都忽视或者没有用到过的一个功能--install,大多数java开发人员都了解maven,使用maven进行依赖管理.但使用的大多数功能不过是clean清理.compile编 ...

  7. 使用Maven打包生成的-SNAPSHOT.jar与-RELEASE.jar分别代表什么?SNAPSHOT是什么意思?RELEASE是什么意思?

    使用Maven打包后生成 XXXXXXX-1.0.0-SNAPSHOT.jar 和 XXXXXXX-1.0.0-RELEASE.jar 的区别???? 首先,根本原因:这是因为你的pom.xml中的项 ...

  8. 手动将jar包导入pom依赖,让jar包适配本地maven项目

    前言: Oracle对maven很久没有更新依赖,虽然19年更新了一版,但pom引入一直有错误. 我用的是oralce 12的依赖,虽然有jar包,但是依赖和pom没有适配,项目打包的时候还要去中央仓 ...

  9. pom文件中引入常用的maven仓库

    给大家分享几个maven仓库,如果本地总是下载很慢的话可以尝试换一下仓库或者多加几个.可以直接拖放在pom.xml中使用. 阿里云仓库 <mirrors><mirror>< ...

  10. Maven安装与配置(最实用!!!)eclipse中配置maven

    Maven安装与配置 一.需要准备的东西 JDK Eclipse(本章主要是在eclipse中进行配置maven) Maven程序包 二.下载与安装 1. 前往maven下载最新版的Maven程序: ...

最新文章

  1. vfp全国计算机二级,全国计算机二级VFP试题
  2. 【UML 建模】UML建模语言入门 -- 静态图详解 类图 对象图 包图 静态图建模实战
  3. CVE-2012-0158栈溢出漏洞分析
  4. git如何切换分支_如何让 Jenkins 支持选择 git 分支进行构建
  5. [ActionScript 3.0] 安全沙箱的类型sandboxType,判断当前程序是AIR还是web程序
  6. python利用缩进写模块_Python之缩进块
  7. 大家常用的 IDEA 插件大推荐,个个都得安装!
  8. ncl 添加点shp文件_基于Arcgis绘制采样点地图
  9. Hbase+Phoenix+Mybatis+Springboot整合查询数据
  10. R语言入门1:安装R和RStudio
  11. C++中名字隐藏,名字查找优先于类型检查
  12. 彗星撞地球-Warez组织的经典力作(15G动画压缩成64Kb的那个,2004年的第一名)
  13. UE4 虚幻引擎,蓝图Movement组件
  14. JSP基本语法(2)函数
  15. 网站域名有哪些不同的种类?
  16. 华三服务器如何修改默认ip,H3C路由器默认登录入口 192.168.124.1 设置步骤
  17. Excel中Mac和Windows对绝对和相对引用的快速切换方式
  18. linux平台potplayer,Daum PotPlayer不安全库加载漏洞
  19. R语言低级绘图函数-rect
  20. 高通CameraSenorBringup

热门文章

  1. 简单说明c语言中常用的基本数据类型有哪些,C语言基本数据类型的.ppt
  2. 数组指针和指针数组,函数指针和指针函数,常量指针和指针常量,常量引用
  3. 计算机语言表示教师节快乐,表达教师节快乐的微信祝福语大汇总54句
  4. Spring中的Advice类型及其应用
  5. Index of c#
  6. 单表数据量过大处理策略
  7. jQuery实现文字向上滚动
  8. Tomcat启动报错整理
  9. appcan 微信支付
  10. BZOJ-1024 生日快乐 DFS+一丝sb的数学思考