import maven project很慢_maven学习笔记1

maven如今是java开发中不可或缺的管理一环,发一些本人的学习笔记,对研究过的笔友希望有些帮助

20d08778a3287838e9ed8ce09500d71b.png

积累来源于灵魂触碰

1.maven的一些概念

maven是Apache的开源项目,是项目管理工具,主要服务于Java平台的项目构建,依赖管理和项目信息管理

2.maven的一些好处

maven可以将现有应用分模块处理,查找方便

jar包可以不用上传SVN,减轻svn的压力

Debug时可以自动跟踪源码、

3.pom.xml是maven项目的核心。例如ant通过build.xml执行构建任务,maven通过pom.xml来执行构建任务和信息

4.maven坐标的含义

project 根节点,在里面定义命名空间和xsd元素

groupId实际项目Id

artifactId项目模块Id

version定义项目目前的版本

packaking 项目的打包方式,默认是jar,web项目是war

dependencies 元素地下就是加依赖包的地方,每个dependency都是一个依赖包,依赖包也就是在dependency里面定义各个依赖包的坐标,这样maven就会从网上下载依赖包到本地仓库,里面其它几个元素的作用

type说明依赖的类型

optional标记依赖是否可选

exclusions用来排斥传递依赖

实际项目

模块

版本

依赖类型

依赖范围

依赖是否可选

5.maven的三套生命周期

clean生命周期

Default生命周期

Site生命周期

6.nexus是当前最流行的maven仓库管理软件

7.maven有一个作用是存放项目所需要的所有jar包,也可以把项目打成jar包或者war包发布到项目上去

8.maven中scope(依赖范围)

在maven的世界中,有很多种classpath,编译classpath,测试classpath,运行classpath,依赖范围就是用来控制依赖与这三种classpath的关系

compile:编译依赖范围。如果没有指定,则默认使用该依赖范围。使用此范围的依赖,在编译,测试,运行着三种classpath都有效。

test:测试依赖范围。使用此范围的依赖,只对测试classpath有效,即只有在测试的代码中才可用。典型例子就是Junit

provided:已提供依赖范围。使用此范围的依赖对于编译和测试都有效,但在运行时无效。典型例子就是servlet-api

runtime:运行时依赖范围。使用此范围的依赖对于测试和运行classpath有效,但在编译主代码是无效。典型例子就是JDBC驱动实现

system:系统依赖范围。对于编译和测试有效,但在运行时无效。使用system范围时,必须通过systemPath元素显示的指定依赖文件的路径(慎用)

import:导入依赖范围

9.maven的目录结构说明

bin:该目录包含了mvn运行的脚本,这些脚本用来配置java命令,准备好classpath和相关java系统属性,然后执行java命令

boot:该目录只有一个文件,这个文件是一个类加器框架,相当于默认的java类加载器,它提供了丰富的语法以方便配置

conf:该目录包含了一个非常重要的文件settings.xml

lib:该目录包含了所有maven运行时需要的java类库

10.maven命令说明

1) mvn clean 表示运行清理操作(会默认把target文件夹中的数据清理掉)

2)mvn clean compile 表示清理之后再编译,代码编译到target文件夹中

3)mvn clean test 表示清理之后再测试

4)mvn clean package 表示清理之后打包

5)mvn clean install 表示清理之后安装,会将打好的包安装到本地仓库中,以便其它的项目可以调用

6)mvn clean deploy 表示清理之后发布

11.依赖具有传递性,比如A->B,B->C,那么A间接的依赖于C

12.maven里面对于依赖性传递有以下几个规则

1)最短路径原则

2)第一声明优先原则

3)可选依赖不会传递

13.本地仓库:是指存在于我们本机的仓库,在我们加入依赖的时候,首先会跑到我们本地仓库去找,如果找不到则会跑到远程仓库中去找;

中央仓库:为供所有本地仓库下载依赖包的一个仓库,它是部署在局域网内的一个仓库;

远程仓库:在中央仓库找不到的依赖包则会跑到远程仓库下载的仓库,它需要互联网来实现依赖包的下载。

14.聚合:一次性对所有模块进行编译,打包,发布;packaging的类型为pom,moudle的值是一个以当前pom为主目录的相对路径

例: 4.0.0

org.pango.user

user-parent

0.0.1-SNAPSHOT

pom

../user-core

../user-log

../user-dao

15.继承:maven中的继承机制类似于java,在一个父级别Maven的pom.xml文件中定义了相关的常量,依赖,插件等等配置后,实际项目模块就可以继承次父项目的pom文件,重复的项不必显示的再声明一遍了,相当于父maven项目是一个模板,通过parent元素来继承父项目中的包

org.pango.user

user-parent

0.0.1-SNAPSHOT

../user-parent/pom.xml

16.继承和聚合的区别和联系

区别:

1.对于聚合模块来说,它知道有哪些聚合的模块,但那些被聚合的模块不知道这个聚合模块的存在

2.对于继承关系的父pom来说,它不知道有哪些子模块要继承它,但那些子模块必须知道自己的父pom是谁

共同点:

1.聚合pom与继承关系中的父pom的packaging都是pom

2.聚合模块与继承关系中的父模块除了POM之外都没有实际的内容

17.nexus是一个对软件管理非常好的工具,可以帮助将开发的组件与其它开发者或终端用户进行共享,nexus可以非常简单的维护本地仓库以及访问外部的仓库,可以很好衔接本地仓库和外部仓库的关系,来达到软件项目的分享

18.私服(nexus)中的repositories就是指仓库,它包含三种类型仓库,分别为host仓库,proxy仓库,group仓库

host仓库:内部项目的发布仓库

proxy仓库:从远程仓库中央仓库中寻找数据的仓库

group仓库:组仓库用来方便开发人员进行设置的仓库

19.maven的生命周期包含项目的清理,初始化,编译,测试,打包,继承测试,验证,部署,站点生成等几乎所有的过程,而且maven的生命周期极其灵活,它的生命周期的每个阶段都是通过插件来实现的

20.maven有三套相互独立的生命周期,这三套生命周期分别是:

1.Clean lifestyle 在进行真正的构建之前进行一些清理工作

2.Default lifestyle 构建的核心部分,编译,测试,打包,部署等等

3.Site liefstyle 生成项目报告,站点,发布站点

这三套生命周期是相互独立的,可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点,当然你也可以直接运行mvn clean install site运行所有的这三套生命周期

21.clean生命周期的阶段

1.pre-clean 执行一些需要在clean之前完成的操作

2.clean 移除所有上一次构建生成的文件

3.post-clean执行一些需要在clean之后立刻完成的操作

22.site生命周期的各个阶段

1.pre-site执行一些需要在生成站点文档之前完成的工作

2. site 生成项目的站点文档

3.post-site 执行一些需要在生成站点文档完成的工作,并且为部署做准备

4.site-deploy 将生成的站点文档部署到特定的服务器上

23.maven是怎么知道有哪些测试类呢,这是约定大于配置的结果,默认情况下,maven会去src/test/java下面去寻找类,此文件下面的类会需要符合以下的规则:

Test*.java 任何目录以Test开头的类

*Test.java 任何以test结尾的类

*TestCase 任何以testCase结尾的类

24.打包可以在Maven build...里面,通过填写clean package

436f31f180c0a466c981873b52c03dad.png

心灵朝向院方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值