Maven快速入门--Idea版
1.web项目的基本知识

1.1 项目构建
项目构建是一个项目从编写源代码到编译、测试、打包、部署、运行的过程
1.1.1传统的构建过程如下:
1)在IDE 中创建一个java web工程
2)在工程中编写源代码及配置文件等(配置环境 导包)
3)对源代码进行编译,java文件编译成class文件
4)执行Junit单元测试
5)将工程打成war包部署至tomcat运行
Mk
1.1.2 mavn构建项目
maven将项目构建的过程进行标准化,每个阶段使用一个命令完成,下图展示了构建过程的一些阶段,后面章节详细介绍每个阶段,这里先大概了解下:

清理阶段对应maven的命令是clean,清理输出的class文件
编译阶段对应maven的命令是compile,将java代码编译成class文件。
打包阶段对应maven的命令是package,java工程可以打成jar包,web包可以打成war包
1.2 maven构建项目的优点:
1、一个命令完成构建、运行,方便快捷。
2、maven对每个构建阶段进行规范,非常有利于大型团队协作开发。
2. 依赖管理
一个java项目可能要使用一些第三方的jar包才可以运行,那么我们说这个java项目依赖了这些第三方的jar包。依赖管理就是对项目所有依赖的jar包进行规范化管理。
(自己理解:就是管理要导入的jar包)
2.1 传统依赖管理
传统的项目工程要管理所依赖的包完全靠人工进行,程序员从网上下载包添加到项目工程中,就是原本我们那jar包导入WEB-INF/lib目录的操作。
2.1.1 手工拷贝jar到工程存在的问题:
- 没有对jar包的版本统一管理,容易导致版本冲突(版本需一致)。
- 从网上找jar包非常不方便,有些jar找不到。
- jar包添加到工程中导致工程过大。
2.2 maven项目依赖管理
maven项目通过往pom.xml(maven工程的配置文件)添加jar包的坐标,来自动从maven仓库中下载jar包,运行。
2.2.1 maven依赖管理的好处:
- 通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
- maven团队维护了一个非常全的maven仓库,里边包括了当前使用的jar包,maven工程可以自动从maven仓库下载jar包,非常方便。
2.2 使用maven的好处
一步构建
maven对项目构建的过程进行标准化,通过一个命令即可完成构建过程。
依赖管理
maven工程不用手动导jar包,通过在pom.xml中定义坐标从maven仓库自动下载,方便且不易出错。
maven的跨平台,可在window、linux上使用。
maven遵循规范开发有利于提高大型团队的开发效率,降低项目的维护成本,大公司都会考虑使用maven来构建项目。
2.2.1 其他项目构建方式
Mk Linux
Gradle——intelj IDE Android
3. Maven的下载和安装
下载
解压
- 将maven解压到一个不含有中文和空格的目录中。
- 目录简介
- bin目录 mvn.bat (以run方式运行项目)、 mvnDebug.bat(以debug方式运行项目 )
- boot目录 maven运行需要类加载器
- conf目录 settings.xml 整个maven工具核心配置文件
- lib目录 maven运行依赖jar包
3.1 环境变量的配置
新增配置 MAVEN_HOME (就是maven的解压目录)
在dos窗口通过
mvn -v命令检查maven是否安装成功,看到maven的版本及java版本即为安装成功
4.Maven仓库repository
4.1 maven仓库的作用

maven的工作需要从仓库下载一些jar包,如下图所示,本地的项目A、项目B等都会通过maven软件从远程仓库(可以理解为互联网上的仓库)下载jar包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此jar包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
4.1.1 本地仓库 :
用来存储从远程仓库或中央仓库下载的插件和jar包,项目使用一些插件或jar包,优先从本地仓库查找
默认本地仓库位置在 ${user.dir}/.m2/repository,${user.dir}表示windows用户目录。
4.1.1.1 配置本地仓库
将 “repository.rar”解压至自己的电脑上,
在MAVE_HOME/conf/settings.xml文件中配置本地仓库位置:
repository的本地地址

4.1.2 远程仓库
如果本地需要插件或者jar包,本地仓库没有,默认去远程仓库(一般使用阿里的国内镜像)下载。
远程仓库可以在互联网内也可以在局域网内(例如一些保密单位不允许使用外网)。
4.1.2.1 配置远程仓库
maven仓库默认在国外,使用很慢,国内支持maven镜像的有阿里巴巴,开源中国(基本不用)等。
注意:要在mirrors标签里配置mirror标签
阿里巴巴远程仓库
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

4.1.3 中央仓库
在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件。
配置中央仓库(基本不用):
<!-- 中央仓库在中国的镜像 -->
<mirror>
<id>maven.net.cn</id>
<name>oneof the central mirrors in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
5. Maven工程
5.1 maven工程目录结构(重点)
Project(必须掌握)
--src
--main 开发部署的代码配置文件等文件
--java 放的是代码
--resources 配置文件及资源文件
--webapp web项目的根目录
--test 单元测试相关的文件
--java 放的是测试代码
--resources 测试配置文件及资源文件(可以不要,可以使用main下的配置文件)
--pom.xml maven的配置文件
--target 文件夹,项目构建相关流程产生的文件,都放在这个目录下

5.2 Maven命令
mvn compile:完成编译操作
默认编译src/main/java,同时会把src/resources下的资源放在编译的输出目录target/classes,存放了编译后的字节码文件。
mvn clean :会将target目录删除。
mvn test:完成单元测试操作
- 执行src\test\java所有包含@Test注解的方法
- 如果单元测试执行失败不会执行后续的操作
- 执行完毕后,会在target目录中生成两个个文件夹: surefire-reports(测试报告)、test-classes(测试的字节码文件,包括test/resources的资源文件)
mvn package:完成打包操作
- 在打包之前会执行mvn test,执行完毕后,会在target目录中生成一个文件,该文件可能是jar、war默认是jar包(文件名artifactId+version+打包类型)
mvn install:将我们的项目安装到本地仓库
5.2.1 Maven给WEB项目打war包
在pom.xml中配置
<packaging>war</packaging>

6.在idea中使用maven
不需要安装maven插件,idea自带有
6.1 配置maven仓库

6.2 创建maven项目

不要使用模板

6.3 父子工程
创建子工程的时候,在这里选择父工程,父工程的创建和普通工程创建的方式一样

创建好父子工程后:
- 在子工程的pom.xml中多了parent节点
- 父工程中有新增module节点
作用和使用场景:
不希望在父工程里编码。具体的代码应该拆分到子工程。父工程的主要职责是把不同的子工程聚合起来,合为一个工程。
父工程里集中配置多个子模块里通用的jar包。
在父工程的pom.xml中抽取一些重复的配置的,比如:锁定jar包的版本、设置编译版本等。父工程定义的jar包子工程可以引用。
在父工程中导入依赖,子工程都可以使用
6.4 依赖作用域(scope)
- Compile:编译的时候需要并且要打包到应用(lib文件夹)(通常默认的是compile)
- Provided:编译的时候需要 打包的时候不需要(通常只有servlet是provided)
- Test:测试;scope为test的依赖只能由Tests目录下的代码使用,sources目录下代码不能使用(通常只有junit4和spring-test这两个依赖scope为test)
- Runtime:运行,编译的时候不需要,运行的时候需要(通常只有mysql-connector-java的scope为runtime)
7.解决jdk1.5的问题
7.1通过更改Maven的 配置文件解决问题
在该目下下找到指定文件:Maven_home/conf/setting.xml ,在里面新增节点
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>

7.2 通过更改maven项目中的pom.xml解决
在配置pom.xml文件里的properties标签
<properties>
<!--key是我们的自定义标签-->
<!--spring.version=5.1.0.RELEASE-->
<spring.version>5.1.0.RELEASE</spring.version>
<mysql.version>5.1.14</mysql.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
8.Properties标签
同属于project的子标签

9. 补充
几个需要注意的点:
- 自动导入问题:idea建议不要设置自动导入,因为有的时候版本号还没写全,idea就已经开始打入,如果没有这个版本,就会出现问题
- 依赖问题:在project structure中检查dependencies中的依赖是否报红,根据路径去查找,看jar包置否存在。
- 当你引入一个其他人的maven工程的时候,首先要检查maven配置是否是自己的
Maven快速入门--Idea版的更多相关文章
- (4)Maven快速入门_4在Spring+SpringMVC+MyBatis+Oracle+Maven框架整合运行在Tomcat8中
利用Maven 创建Spring+SpringMVC+MyBatis+Oracle 项目 分了三个项目 Dao (jar) Service (jar) Controller (web) ...
- (1)Maven快速入门_1maven安装
Maven 快速入门 1.1 Maven官网下载 windows 系统 下载 下图红色框选处. 下载到本地解压, 创建一个本地maven仓库的目录 maven_lib 配置Maven的环境变量 ...
- Java实战及解析 — Maven快速入门
五分钟快速入门 mvn --version mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -Darche ...
- Maven快速入门(一)Maven介绍及环境搭建
做开发的程序员都知道,在系统开发需要各自各样的框架.工具.其中有一种工具不管你是初级程序员还是高级程序员都必须熟练掌握的,那就是项目管理工具(maven.ant.gradle).接下来就总结Maven ...
- Maven快速入门(二)手动创建maven项目hellomaven
之前讲过Maven介绍及环境搭建,介绍了maven的作用和如何搭建maven环境.接下来就以一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,最后讲maven如 ...
- Maven快速入门(三)Maven的坐标和仓库
之前通过一个helloworld的例子来说一说如何创建maven项目以及maven项目的项目结构,然后讲maven如何编译运行项目.接下来介绍maven中几个比较重要的概念:坐标和仓库.Maven快速 ...
- Maven——快速入门手册(学习记录)
前言: 前段时间进行了一点maven的入门学习,在这里做个记录,希望能帮到一些正在学习的朋友们.maven版本为3.3.9.希望大家觉得好的点个赞,觉得不好的多提提意见和建议做个交流.这里也贴出我学习 ...
- IDEA快速入门(Mac版)
[持续更新]一篇今年年头的老文章顺道发布了,大家有任何问题可以留言沟通.当时刚刚加入团团,愿大家有机会还是购买一台MAC,确实能给大家的效率赋能,虽然在一开始会有一些艰难!⛽️ 望借着换工作的东风,好 ...
- IntellijIDEA快速入门(Windows版)
跟随公司变更技术堆栈的步伐,开始学习相应工具IntelliJ的使用,之前一个大神同时也提到,最近该IDE的市场份额已然超越了免费的Eclipse,因此该工具已经到了必须会的程度了. 新年快乐,鸡年大吉 ...
随机推荐
- Web安全攻防笔记-SQL注入
information_schema(MySQL5.0版本之后,MySQL数据库默认存放一个information_schema数据库) information_schema的三个表: SCHEMAT ...
- 微软在Build 2019大会上发布Fluid Framework协作平台
在今年年度开发者大会上,微软已经为开发人员宣布了一个新的Fluid Framework.该框架基本上是一个新的基于Web的平台,允许团队在自由流动的流程上工作.微软已经分享了一些新功能,可以帮助团队在 ...
- Android集成极光推送
要说学习极光推送,个人感觉官方文档就非常好啦,但是没法,人太懒啦,为了下次能够快速的将极光推送集成到项目中,故结合之前开发的项目和官方文档记录下简单的Android集成极光推送,在这之前,先上一张简单 ...
- CODING 2.0:如何通过设计给品牌创造价值?
升级背景 伴随着 CODING 理念的全面升级,CODING 正构建起覆盖构想到交付的全覆盖工具链,用户注册即可实践敏捷开发与 DevOps,提升软件交付质量与速度. 一直以来,CODING 作为软件 ...
- __rpm.so: underfined symbol : rpmpkgverifySigs 故障分析
前言: 近期漏洞修复频繁,各种组件需要升级,经多次碰撞,发现 yum update 来升级组件是最有效最安全的方式(绿盟通过版本比对的扫描结果可以忽略). 然而,各家的设备各家管,一到升级就发现一堆问 ...
- luoguP2486 [SDOI2011]染色
题目 Description 给定一棵有n个节点的无根树和m个操作,操作有2类: 1.将节点a到节点b路径上所有点都染成颜色c: 2.询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段) ...
- 在安装完jdk以后,发现javac不能执行
安装和配置环境变量都按着流程在,但在最后的检验时,发现Java Java -version 都能运行,唯独Javac 报“不能识别命令”错误信息,下面列出我遇到一个尴尬问题 在path变量里
- NOIP模拟赛2(two)
题目描述 Description 很久很久很久以前,方方方造了一台计算机,计算机中开始有一个数 \(0\) .方方方想要让这个数变成 \(a\) ,他打算每次选择一个整数,把计算机中当前的数按位或上这 ...
- vue 使用watch监听实现类似百度搜索功能
watch监听方法,watch可以监听多个变量,具体使用方法看代码: HTML: <!doctype html> <html lang="en"> < ...
- 小测试整理(含T1 T2)
这次测试规模较小,前两题也较水,但需要整理 T1(Jelly的男♂难题1): 从一个点出发,以四连通的方式扩散,可以走#,不能走o,走过的格子每单位时间会增加1点高度,问扩散完整间屋子需要的时间,以及 ...