发表于: 2018-04-06 21:13:13

1 822


今天继续学习了Maven的一些知识,慢慢熟悉IDEAMaven的使用。明天再开始学习Java基本知识。第四天了,还需努力加油!

今日完成:

1.Maven项目与普通的Java项目 的区别

Maven的用途之一是服务于构建,它是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理、编译、测试到生成报告,再到打包和部署。我们不需要也不应该一遍又一遍地输入命令,一次又一次地点击鼠标,我们要做的是使用Maven配置好项目,然后输入简单的命令(如mvn clean install),Maven会帮我们处理那些烦琐的任务。

Maven是跨的,无论是在Windows上,还是在Linux或者Mac上,都可以使用同样的命令。

Maven不仅是构建工具,还是一个依赖管理工具和项目信息管理工具

 

2.Maven的依赖管理

Maven 核心特点之一是依赖管理。一旦我们开始处理多模块工程(包含数百个子模块或者子工程)的时候,模块间的依赖关系就变得非常复杂,管理也变得很困难。针对此种情形,Maven 提供了一种高度控制的方法。

 

传递依赖发现

这种情形经常可见,当一个库 A 依赖于其他库 B. 另一工程 C 想要使用库 A, 那么该工程同样也需要使用到库 B

Maven 可以避免去搜索所有需要的库资源的这种需求。通过读取工程文件(pom.xml)中的依赖项,Maven 可以找出工程之间的依赖关系。

我们只需要在每个工程的 pom 文件里去定义直接的依赖关系。Maven 则会自动的来接管后续的工作。

通过传递依赖,所有被包含的库的图形可能会快速的增长。当重复的库存在时,可能出现的情形将会持续上升。Maven 提供一些功能来控制可传递的依赖的程度。

功能

功能描述

依赖调节

决定当多个手动创建的版本同时出现时,哪个依赖版本将会被使用。   如果两个依赖版本在依赖树里的深度是一样的时候,第一个被声明的依赖将会被使用。

依赖管理

直接的指定手动创建的某个版本被使用。例如当一个工程 C 在自己的以来管理模块包含工程 B,即 B 依赖于 A,   那么 A 即可指定在 B 被引用时所使用的版本。

依赖范围

包含在构建过程每个阶段的依赖。

依赖排除

任何可传递的依赖都可以通过 "exclusion" 元素被排除在外。举例说明,A 依赖 B B 依赖 C,因此 A 可以标记 C 被排除的

依赖可选

任何可传递的依赖可以被标记为可选的,通过使用 "optional" 元素。例如:A 依赖 B B 依赖 C。因此,B 可以标记 C 为可选的,   这样 A 就可以不再使用 C

依赖范围

传递依赖发现可以通过使用如下的依赖范围来得到限制:

范围

描述

编译阶段

该范围表明相关依赖是只在工程的类路径下有效。默认取值。

供应阶段

该范围表明相关依赖是由运行时的 JDK 或者   网络服务器提供的。

运行阶段

该范围表明相关依赖在编译阶段不是必须的,但是在执行阶段是必须的。

测试阶段

该范围表明相关依赖只在测试编译阶段和执行阶段。

系统阶段

该范围表明你需要提供一个系统路径。

导入阶段

该范围只在依赖是一个 pom 里定义的依赖时使用。同时,当前工程的POM 文件的 部分定义的依赖关系可以取代某特定的 POM

依赖管理

通常情况下,在一个共通的工程下,有一系列的工程。在这种情况下,我们可以创建一个公共依赖的 pom 文件,该 pom 包含所有的公共的依赖关系,我们称其为其他子工程 pom pom 父。 下面是例子:

 

下面是上述依赖图表的细节:

  • App-UI-WAR 依赖于App-Core-lib App-Data-lib.
  • Root App-Core-lib App-Data-lib 的父类。
  • Root 在其依赖模块里定义了 Lib1,lib2,Lib3 3个依赖关系。

现在,当我们构建 App-UI-WAR 工程时,Maven 将会通过遍历依赖图找到所有的依赖关系,并且构建该应用程序。

通过上面的例子,我们可以学习到以下关键概念:

  • 公共的依赖可以使用 pom 父的概念被统一放在一起。App-Data-lib App-Core-lib 工程的依赖在Root 工程里列举了出来(参考 Root的包类型,它是一个 POM)
  • 没有必要在 App-UI-W 里声明 Lib1, lib2, Lib3 是它的依赖。 Maven 通过使用可传递的依赖机制来实现该细节。

 

3.通过IDEA编写一个Hello World程序

创建程序名为HelloWorld

编写程序并执行

在输入的时候光标无法输入,后来查询说是修改时间导致的,我改了时间还是不行。后来找到需要修改Settings,才完美解决。

Plugins下的IdeaVim勾选去掉就OK了。

 

明日计划:

开始学习Java基本知识

 

遇到的问题:

IDEA无法输入的问题,光标无法使用,后来重新配置了Settings-Plugins-IdeaVimOK

 

收获:

学习了Maven的基本项目管理模式及依赖管理,只是表面了解一下,不是很透彻,后面用到才会慢慢熟悉吧

IDEA编写了第一个Java程序HelloWorld



返回列表 返回列表
评论

    分享到